1.算数异常:ArithmeticExecption
空指针异常:NullPointerException
数组下标越界异常:ArrayIndexOutOfBoundsException
类型转换异常:ClassCastException
字符串转换为数字异常:NumberFormatException
输入类型不匹配:inputMisMatchException
2.捕获异常:try-catch-finally
抛出异常:throw,throws
3.try中没有异常的话,此时会忽略所有的catch,执行后面的代码
如果try发生异常了,异常后面的代码都不会执行,程序会去catch中进行匹配,查看是否有一个catch能将这个异常给解决了
//2.1:找到了,则执行catch块中的代码,只要执行了,则认为异常解决了,程序会继续执行try-catch后面的代码
//2.2:没有解决的,程序会报错,停止运行
3.在编写catch中,异常类型需要有小到大
4.finally一定会被执行的代码,不管是否有异常,一定会执行
finally 有一种场景是不会运行的,手动的关闭程序,System.exit(0);
如果try-catch中存在return的话,finally还会执行吗?如果执行,谁先执行?-finally先执行,然后在返回结果运行顺序如下:
一
ArithmeticException
程序finally代码
程序结束
代码:
try{
System.out.println(“一”);
System.exit(0);
System.out.println(10/0);
System.out.println(“二”);
return;
}catch(ArithmeticException a){
System.out.println(“ArithmeticException”);
}catch (NullPointerException n) {
System.out.println(“三”);
}catch(ClassCastException c){
System.out.println(“四”);
}catch (Exception e) {
e.printStackTrace();//输出异常信息
System.out.println(“五”);
}finally{
System.out.println(“程序finally代码”);
}
System.out.println(“程序结束”);
4.表示的是,这个方法可能存在异常,当调用者来调用这个方法的时候,public int division(int num1, int num2)throws Exception{//声明异常
throws ,抛出异常,—抛给调用者
public int division(int num1, int num2){
int result;
if(num2 == 0){
throw new ArithmeticException(“除数不能为0”);//抛出异常 创建并抛出异常。
}else{
result = num1 / num2;
}
return result;
}
5.throw new ArithmeticException(“除数不能为0”);
抛出异常 创建并抛出异常,括号内加值–(有参构造)
e.printStackTrace()
控制台显示:java.lang.ArithmeticException: 除数不能为0
自定义异常 package com.sky.exception3; public class AgeMisMatchException extends RuntimeException{ public AgeMisMatchException() { super(); } public AgeMisMatchException(String s){ super(s); } }
package com.sky.exception3; public class User { private int age; private String name; public int getAge() { return age; } public void setAge(int age){ if (age < 1 || age > 120) { throw new AgeMisMatchException("输入年龄不匹配"); } this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.sky.exception3; public class TestAgeMisMatchException { public static void main(String[] args){ User user = new User(); user.setAge(123); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)