今天,社团学长说我就是骚,我去,真是。。。没法反驳啊。。。

什么是异常呢?
你和你对象正在吃饭,ta突然说:“你不爱我了”,哎呀我去,这有点小懵逼啊,你说:“我怎么了,宝贝”,ta说:“你不给我买冰淇淋吃”,或者是:“你不陪我去看电影了”。你在寒风中独自凌乱。。。
“你不爱我了”,怎么回事?关系出现异常了嘛
但是你深爱着ta,你能就这么分手,或者不管不问吗?当然不能,所以你要进行异常处理,
没错。。。

try-catch 处理异常
throw、throws 关键字抛出异常
异常是一种对象,表示阻止程序正常执行的错误或情况。
错误:指 运行时错误(JVM检测出的不可能的操作)
运行时错误:会作为异常(对象)抛出。——>若未被处理,则会非正常终止。

异常处理:使程序可以继续运行或优雅地终止。
方法抛出异常,调用者可以捕获以及处理该异常。
如:

int num1=1,num2=0,result;
try{
	result=num1/num2;
}catch(Exception ex){
	System.err.println(ex.getMessage());
	//记录在日志中
	log.log(Level.WARNING,ex.getMessage());
}

对象思维谈JavaOO —— 异常处理

捕获异常:Exception e -> 异常作为e这个对象打印
e.printStackTrace(); <-以堆栈的方式打印出来
然后,注意了:会继续执行! 然后返回的就是值的初始值!
而众所周知,若不加try-catch,会报错,终止程序。
过程:try:监测“{}”中的代码块是否会出现异常,如果会,就作为 对象捕获,catch后的大括号可以输出异常,如:System.err.println(ex.getMessage());得到Message属性(即:异常信息)
如:对象思维谈JavaOO —— 异常处理
比如啊,“我不爱你了”,这个异常就被放在这啊:Exception e;

那么,异常处理有什么用?
可以使程序在提示错误的情况下继续运行下去。(但错误值自动执行初始设定值)
n不nb?

异常处理机制

简称:try-catch
try:监控有可能产生异常的语句块。
catch:以合理的方式捕获异常并处理。
finally:不管有无语句,一定会执行的语句块(一般用来释放内存资源等)
throw:手动引发异常。
下面说到的“printStackTrace”——以堆栈的方式打印信息——throws类中定义的方法。

我们说,万物皆对象
对象思维谈JavaOO —— 异常处理
还有ArithmeticException(算术计算异常)等,都是常见异常。

必检异常:抛出型异常,必须用try…catch捕获、检测、并且进行处理。
要么谁都不管,继续抛出(main后加:throws IOException)

//NumberFormat Exception (格式转换异常) —— 免检异常
String strvalue="123";
int value1=Intrger.parseInt(strvalue);
System.out.prinfln(value1);

在异常处理中,有这样一句:e.printStackTrace();
作用:将异常对象的堆栈跟踪输出至错误输出流。

堆栈打印

一种先进后出的数据结构(类比:人多时的电梯)
从出现错误的方法开始,从后向前打印方法。

(再说,Scanner输入其实是极度不安全的方法,“安全”要掌握在自己手里)

至此,再说说对异常处理的理解吧:让程序检测出错误的情况下任然运行,并记录错误,便开发者修改!

捕获异常时,一定要“兼容”:要么写对,要么写父类(异常类型)。

回味一下,在有异常处理的存在下,若有步骤发生错误,将会直接跳至try-catch块内捕获,返回异常并记录,使程序继续运行下去。

try-catch-finally
无论是否发生异常,finally块中的代码总能被执行(除了前面有System.exit();的情况)
使用finally块的场合:若前面开启了相关资源(文件、SQL等),为避免出现资源浪费,就可以使用finally块在执行完毕后强制要求关闭所有打开的资源。

最后来看一下:

try{
	语句 1
			2
			3
}catch(Exception ex1){
}finally{
	语句 4
}
语句 5

若异常类型不匹配,会执行那些语句?
.
.
.
答案是:1,2,4
想想为什么?

相关文章:

  • 2021-05-30
  • 2021-08-13
  • 2021-07-07
  • 2021-12-21
  • 2021-09-04
  • 2022-02-26
  • 2021-05-25
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-20
  • 2021-11-20
  • 2021-11-07
  • 2021-12-21
  • 2021-07-26
相关资源
相似解决方案