您的位置:首页 > 其它

2018_3_20 异常

2018-03-21 10:46 357 查看
1.java异常处理5个关键字:try,catch,finally,throw,throws;
2.try{

}catch(Exception e){

}如果try语句块在执行过程中遇到异常,并且这个异常与catch中声明的异常类型相匹配,那么
try块中其余剩下的代码都将被忽略,而相应的catch语句块将执行
匹配:是指catch所处理的异常类型与所生成的异常类型完全一致或是他的父类; try
{
System.out.println("请输入被除数");
Scanner z=new Scanner(System.in);
int a=z.nextInt();
System.out.println("请输入除数");
int b=z.nextInt();
int c=a/b;
}
catch(Exception e)
{
e.getMessage();//返回异常信息描述字符串,该字符串描述异常产生的原因,是printStackTrace()方法输出信息的一部分;
e.printStackTrace();
/*
* 输出异常的堆栈信息,堆栈信息包括程序运行到当前类的执行流程,
* 它将输出从方法调用处到异常抛出处的调用序列
*/

}资料:如果try块在执行过程中遇到异常,那么在try块中其余剩下的代码都将被忽略,
系统会自动生成相应的异常对象,包括异常的类型,异常出现时程序的运行状态及对
该异常的详细描述,如果这个异常对象与catch中声明的异常类型相匹配,则会把该异常
对象赋给catch后面的参数,相应的catch块将会被执行。
3.常见异常类型
                1. Exception 异常层次结构的根类                 2. ArithmeticException 算数错误情形.如 以零作除数                 3. ArrayIndexOutOfBoundsException 数组下标越界                 4. NullPointerException 尝试访问null对象成员                 5. ClassNotFoundException 不能加载所需的类                 6. InputMismatchException 欲得到的数据类型与实际输入的数据类型不匹配                7. IllegalArgumentException 方法接收到非法参数                 8. ClassCastException 对象强制类型转换出错                 9. NumberFormatException 数字格式转换异常。如 把“abc”转换成数字4.try{

}catch(Exception e){

}finally{

}注意:try-catch-finally结构中try块是必须的,catch和finally为可选,但两者必须出现其中一个。
        特别是,即使在try块和catch块中,放入return语句。finally语句块中语句也会被执行。
            finally 块中语句不被执行的唯一情况:在异常处理代码中执行System.exit(1);将退出Java虚拟机
try
{
System.out.println("请输入被除数");
Scanner z=new Scanner(System.in);
int a=z.nextInt();
System.out.println("请输入除数");
int b=z.nextInt();
int c=a/b;
}
catch(Exception e)
{
e.getMessage();//返回异常信息描述字符串
e.printStackTrace();
System.exit(1);

}finally{
System.out.println();
}5.多重catch块:
一段代码可能会引发多种类型的异常,这时可以在一个try语句块后面跟多个catch语句块,分别处理不同的异常
但排列顺序必须是从子类到父类,最后一个一般是Exception类;因为所有异常子类都继承自Exception类,所以
如果将父类放到前面,那么所有的异常都会被捕获,后面的catch块中的子类异常将得不到被执行的机会try
{
System.out.println("请输入被除数");
Scanner z=new Scanner(System.in);
int a=z.nextInt();
System.out.println("请输入除数");
int b=z.nextInt();
int c=a/b;
}
catch(InputMismatchException e){

}
catch(ArithmeticException e)
{

}
catch(Exception e)
{
e.getMessage();//返回异常信息描述字符串
e.printStackTrace();
System.exit(1);

}finally{
System.out.println();
}6.声明异常:throwspublic static void divide() throws Exception
{
System.out.println("请输入被除数");
Scanner z=new Scanner(System.in);
int a=z.nextInt();
System.out.println("请输入除数");
int b=z.nextInt();
int c=a/b;
}throws后面可以跟1个或多个异常类,且至少要跟一个类
7.抛出异常:throw public class man{
private String sex;
public void setSex(String sex) throws Exception{
if("男".equals(sex)||"女".equals(sex))
this.sex=sex;
else{
throw new Exception("性别必须是男或者女");
}
}
}8.throw 与throws 的区别:3个方面
作用不同:throw 用于在程序中抛出异常;throw用于声明在该方法内抛出了异常。
使用的位置不同:throw位于方法体内部,可以作为单独语句使用;throw必须跟在方法参数列表的后面,不能单独使用
内容不同:throw 抛出一个异常对象,而且只能是一个;throws后面跟异常类,而且可以跟多个异常类。
9.异常的分类:
    


关于异常详细点此连接:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: