关于异常
编译错误,逻辑错误不算异常;其实是一些因为不可控的因素,不期而至的各种情况,导致程序运行的异常
用对象表示
异常的体系结构:
(1)Throwable类,所有错误或例外的超类
分为Error、Exception
Error是错误,不应该试图捕获,而是应该尽量避免,并非是几句代码就能解决的错误
Exception是例外,
分为受检异常:编译期要求必须处理的,否则,编译不通过
非受检异常,编译期间不强制要求处理,但在运行期间可能发生异常RuntimeException
受检异常包括:IOException SQLException FileNotFoundException
非受检异常有:NullPointerException ArithmeticException ArrayIndexOutOfBoundsException
一般都是编码的原因,应尽量去避免
Java的异常处理机制
抛 JVM自动抛出,也可以手动抛出
抓 catch
try catch异常 可以有多个
finally 不管是否发生异常都要执行的代码,一般用于释放资源连接
catch里应该如何处理呢
e.printStackTrace() 打印出来,堆栈信息,全面的,红色显示
e.getStackTrace()
e.getMessage()
也可以作为日志记录
throws 异常列表
实际开发中,一般底层选择throws,而上边的代码进行try catch
重写父类的方法时:异常的类型<=父类
手动抛出异常 throw
throw 异常对象
可以替代return结束某一个语句
如果throw是运行时异常,那么编译期不会要求当前方法或编译者必须编写处理代码
自定义异常
必须继承Throwable或者他的其他子类
一般是继承Exception或RuntimeException
自定义的异常只能通过throw手动抛出,JVM不会自动抛出
要注意finally和return执行的顺序
在return之前先执行finally的代码
finally中不建议写return
关于Integer
在-128~127之间使用最多,所以有个类似缓存的东西存在,这样就不用每次开辟新的Integer对象了;
如果是其他的值的话,需要每次新的对象
编译错误,逻辑错误不算异常;其实是一些因为不可控的因素,不期而至的各种情况,导致程序运行的异常
用对象表示
异常的体系结构:
(1)Throwable类,所有错误或例外的超类
分为Error、Exception
Error是错误,不应该试图捕获,而是应该尽量避免,并非是几句代码就能解决的错误
Exception是例外,
分为受检异常:编译期要求必须处理的,否则,编译不通过
非受检异常,编译期间不强制要求处理,但在运行期间可能发生异常RuntimeException
受检异常包括:IOException SQLException FileNotFoundException
非受检异常有:NullPointerException ArithmeticException ArrayIndexOutOfBoundsException
一般都是编码的原因,应尽量去避免
Java的异常处理机制
抛 JVM自动抛出,也可以手动抛出
抓 catch
try catch异常 可以有多个
finally 不管是否发生异常都要执行的代码,一般用于释放资源连接
catch里应该如何处理呢
e.printStackTrace() 打印出来,堆栈信息,全面的,红色显示
e.getStackTrace()
e.getMessage()
也可以作为日志记录
throws 异常列表
实际开发中,一般底层选择throws,而上边的代码进行try catch
重写父类的方法时:异常的类型<=父类
手动抛出异常 throw
throw 异常对象
可以替代return结束某一个语句
如果throw是运行时异常,那么编译期不会要求当前方法或编译者必须编写处理代码
自定义异常
必须继承Throwable或者他的其他子类
一般是继承Exception或RuntimeException
自定义的异常只能通过throw手动抛出,JVM不会自动抛出
要注意finally和return执行的顺序
在return之前先执行finally的代码
finally中不建议写return
关于Integer
在-128~127之间使用最多,所以有个类似缓存的东西存在,这样就不用每次开辟新的Integer对象了;
如果是其他的值的话,需要每次新的对象