异常是什么? 是对问题的描述。将问题进行对象的封装。
也就是说将问题出在哪里告诉编写者的一样东西。
异常类的体系:
java.lang.Throwable:
Throwable:可抛出的。
|--Error:错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正。
|--Exception:异常,可以有针对性的处理方式
异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性
也就是说可以被throw和throws关键字所操作
只有异常体系有这个特点
throw 和 throws的区别
throw定义在函数内, 用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
注意:
当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,都在编译时注意,RuntimeException除外。
也就是说,函数内如果抛出的RuntimeException异常函数上可以不用申明。
如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try
异常有两种:
1.编译时被检测异常
该异常在编译时,如果没在处理(没有抛出也没有try),编译失败
该异常被标识,代表这可以被处理
2.运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查
该异常的发生,建议不处理,让程序停止。需要对代码进行修正
用法: 处理方式有两种:1、捕捉;2、抛出。
异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性
也就是说可以被throw和throws关键字所操作
只有异常体系有这个特点
throw 和 throws的区别
throw定义在函数内, 用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
注意:
当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,都在编译时注意,RuntimeException除外。
也就是说,函数内如果抛出的RuntimeException异常函数上可以不用申明。
如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try
异常有两种:
1.编译时被检测异常
该异常在编译时,如果没在处理(没有抛出也没有try),编译失败
该异常被标识,代表这可以被处理
2.运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查
该异常的发生,建议不处理,让程序停止。需要对代码进行修正
用法: 处理方式有两种:1、捕捉;2、抛出。
对于捕捉:java有针对性的语句块进行处理。
try {
需要被检测的代码;
}
catch(异常类 变量名){
异常处理代码;
}
fianlly{
一定会执行的代码;
}
三个格式: (1)try{ } catch{ }
(2) try{ } finally{ }
(3) try{} catch{} finally{ }
注意 finally 中定义的通常是关闭资源的代码。 应为资源必须得到释放。
finally只有一种情况下不执行。当执行到System.exit(0) finally 不执行。
一个try可以对应多个catch。
自定义异常:
定义继承Exception或者RuntimeException
1.为了让该自定义类具备可抛性
2.让该类具备操作异常的方法
当要定义自定义异常的信息时,可以使用父类已经定义好的功能
异常信息传递给父类的构造函数
自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装 。
例:写了一个乘数是负数就报错的程序
异常的好处:
异常把正常流程代码和问题代码分离开,便于阅读。
程序出错的时候可以知道大致的问题 便于修改和分析。
三个格式: (1)try{ } catch{ }
(2) try{ } finally{ }
(3) try{} catch{} finally{ }
注意 finally 中定义的通常是关闭资源的代码。 应为资源必须得到释放。
finally只有一种情况下不执行。当执行到System.exit(0) finally 不执行。
一个try可以对应多个catch。
自定义异常:
定义继承Exception或者RuntimeException
1.为了让该自定义类具备可抛性
2.让该类具备操作异常的方法
当要定义自定义异常的信息时,可以使用父类已经定义好的功能
异常信息传递给父类的构造函数
自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装 。
例:写了一个乘数是负数就报错的程序
class
cuo
extends
RuntimeException
//自定义异常
{
private
int
c;
cuo(
String
msg,
int
b)
{
super(
msg);
c
=
b;}
//将错误信息传给父类
int
getb()
{
return
c;}
}
class
cheng
//乘法
{
int
cheng(
int
a,
int
b)
{
if(
b
<
0)
throw
new
cuo(
"乘数为负数",
b);
return
a
*
b;}
}
public
class
cs03 {
public
static
void
main(
String []
args)
{
int
a
=
0;
cheng
c
=
new
cheng();
try
{
a
=
c.
cheng(
4,
-3);}
catch(
cuo
e)
{
System.
out.
println(
e.
toString()
+
" "
+
e.
getb());}
//答应错误性息 返回错误值
System.
out.
println(
a);//为了查看a
=c.cheng(
4,
-3);//有没有成功赋值
}
}
异常的好处:
异常把正常流程代码和问题代码分离开,便于阅读。
程序出错的时候可以知道大致的问题 便于修改和分析。