1,认识异常
生活中的异常,比如:
package 第十三次作业;
class Exc{//方法
int i=10;//定义值
}
public class ExceptionDem01 {
public static void main(String[] args) {
Exc e=null;//创建对象
// e=new Exc();
System.out.println(e.i);//调用方法
}
}
运行结果
数学中的异常
package 第十三次作业;
public class ExceptionDem01 {
public static void main(String[] args) {
int a=10;//定义值
int b=0;//定义值
int temp=a/b;//计算结果
System.out.println(temp);//输出语句
}
}
运行结果
2,处理异常
1.异常格式:
try{
异常语句
}catch(Exception e){
}finally{
一定会执行的代码
}
package 第十三次作业;
public class ExceptionDem01 {
public static void main(String[] args) {
int a=10;//定义值
int b=0;//定义值
int trmp=0;//定义值
try {// try语句处理异常信息
trmp=a/b;//计算结果
}catch(ArithmeticException e) {//捕捉是否异常
System.out.println(e);//输出结果
}
System.out.println(trmp);//输出语句
}
}
运行结果
3,常见异常
1.数组越界异常:ArryIndexOutOfBoundsException ;
2.数字格式化异常:NumberFormatException ;
3.算数异常:ArithmeticException ;
4.空指针异常:NullPointerException 。
package 第十三次作业;
class Exc{
int a=10;//定义值
int b=10;//定义值
}
public class ExceptionDem01 {
public static void main(String[] args) {
int temp=0;//定义值
Exc e=null;
e=new Exc();//创建对象
temp=e.a/e.b;//计算值
System.out.println(temp);//输出语句
System.out.println("程序输出");//输出语句
}
}
运行结果
package 第十三次作业;
class Exc{
int a=10;//定义值
int b=10;//定义值
}
public class ExceptionDem01 {
public static void main(String[] args) {
int temp=0;//定义值
Exc e=null;
//e=new Exc();//创建对象
try {//是否异常
temp=e.a/e.b;//计算值
System.out.println(temp);//输出语句
}catch(NullPointerException e2) {//获取异常
System.out.println("空指针异常:"+e2);//输出
}catch(ArithmeticException e2) {//获取异常
System.out.println("算数异常:"+e2);//输出
}
System.out.println("程序输出");//输出语句
}
}
运行结果
4,throws关键字
1,在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理。
2,格式:
public void tell() throws Exception{}
package 第十三次作业;
public class ExceptionDem02 {
public static void main(String[] args) {
tell(10,0);//创建数组
}
public static void tell(int i,int j) throws ArithmeticException {//抛出异常
int temp=0;//定义值
temp=i/j;//计算
System.out.println(temp);//输出
}
}
运行结果
使用try...catch:
package 第十三次作业;
public class ExceptionDem02 {
public static void main(String[] args) {
try {
tell(10,0);//创建数组
}catch(Exception e){//捕捉异常
System.out.println(e);//输出
}
}
public static void tell(int i,int j) throws ArithmeticException {//抛出异常
int temp=0;//定义值
temp=i/j;//计算
System.out.println(temp);//输出
}
}
运行结果
如果方法抛出了异常,调用方法时,必须为捕捉的方法处理异常,当然,如果使用throws关键字将异常抛出给上一级后,不想处理该异常,可以继续向上抛出,但最终有能够处理异常的代码。
5,throw关键字
throw通常用来抛出用户自定义异常,抛出的时候异常类的实例化对象即可。
package 第十三次作业;
public class ExceptionDem02 {
public static void main(String[] args) {
try {
throw new Exception("实例化异常对象");//抛出
}catch(Exception e){//捕捉异常
System.out.println(e);//输出
}
}}
运行结果
6,自定义异常
自定义异常直接继承Excemtion类就可以完成自定义异常类
package 第十三次作业;
class MyException extends Exception{
public MyException(String msg) {
super(msg);
}
}
public class ExceptionDem02 {
public static void main(String[] args) {
try {
throw new Exception("实例化异常对象");//抛出
}catch(Exception e){//捕捉异常
System.out.println(e);//输出
}
}}
运行结果