标签:问题 span 体系 inter 算法 this getc 就会 oid
-Throwable -Error -Exception -RuntimeException
|
1.4 JVM默认是如何处理异常的?
|
|
因为不知道未来会怎么样,需要做个准备。
自己处理异常的两种方试
|
|
try { int[] arr = {1,2,3}; System.out.println(arr[4]);//ArrayIndexOutOfBoundsException数组越界异常 int a = 10 / 0;//ArithmeticException:算术异常 System.out.println(a); int[] arr1 = null; System.out.println(arr1[0]);//NullPointerException空指针 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常..."); } catch (ArithmeticException e){ System.out.println("算术异常..."); } catch(NullPointerException e){ System.out.println("空指针异常..."); }
try { int[] arr = {1,2,3}; System.out.println(arr[4]);//ArrayIndexOutOfBoundsException数组越界异常 int a = 10 / 0;//ArithmeticException:算术异常 System.out.println(a); //catch (ArrayIndexOutOfBoundsException | ArithmeticException | NullPointerException e) } catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { System.out.println(e.getClass()); System.out.println("数组越界异常或者算法异常..."); }
try { //1.有可能出现数组越界异常 int[] arr = {1,2,3}; System.out.println(arr[1]); //2.算术异常 int a = 10 / 2; //3.空指针异常 int[] arr1 = null; //NullPointerException np; System.out.println(arr1[0]); }catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常"); } catch (ArithmeticException e) { System.out.println("算术异常"); } catch (Exception e) { System.out.println("其它异常"); }
|
|
|
|
Person.java |
class Person { private int age; public void setAge(int age)throws Exception { //年龄要1~150岁内 if(age >= 1 && age <=150){ this.age = age; }else{ //System.out.println("你是来自火星"); throw new Exception("你是来自火星");//告诉外界异常的类型 } } public void say(){ System.out.println("我今年"+ age); } } |
main方法 |
|
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
它表示抛出异常,由该方法的调用者来处理
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名,表示抛出异常
|
如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后?
答:会执行,finally的代码在return之前执行
|
/** * 自定义异常的步骤: * 1.写一个类(AgeException)继承Exception,这种是编译时异常 * 2.在子类异常AgeException提供一个带字符串参数的构造方法 * public AgeException(String msg){ super(msg); } 3.自定义异常时,也可以继承RuntimeException,这种是运行时异常 */ |
AgeException.class |
|
Person.class |
|
/* 1.子类重写父类方法时,子类的方法必须抛出相同的父类异常 2.如果被重写的方法没有异常抛出,那么子类的方法最好不要抛出异常 3.如果子类方法内有异常发生,那么子类只能try,不能throws*/ |
|
1.原则:如果自己能处理的问题,就用try-catch, 如果自己不能解决的问题,就throws
2.try-catch和throws的区别:
3.如果JDK没有提供对应的异常,需要自定义异常。
|
|
|
|
|
|
标签:问题 span 体系 inter 算法 this getc 就会 oid
原文地址:https://www.cnblogs.com/aaron911/p/9856280.html