Java异常 Exception类及其子类

Java异常 Exception类及其子类

C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象。

Java异常处理通过5个关键字try、catch、finally、throw、throws进行管理。基本过程是用try包住要监视的语句,如果在try内出现异常,则异常会被抛出,catch中捕获抛出的异常并做处理,finally一定会完成未尽事宜。

练习:

package com.swift;

public class Exception1

{

public static void main(String args[]){

System.out.println("=========计算开始=========");

try{

int i=Integer.parseInt(args[0]);

int j=Integer.parseInt(args[1]);

int temp=i/j;

System.out.println("计算结果:"+ temp);

}catch(ArithmeticException e){

System.out.println("出现了数学异常 "+ e);

}catch(ArrayIndexOutOfBoundsException e){

System.out.println("出现了数组异常 "+ e);

}catch(NumberFormatException e){

System.out.println("出现了格式异常 "+ e);

}catch(Exception e){

System.out.println("其他异常 "+e);

}finally{

System.out.println("不管是否有异常,我都执行。");

}

System.out.println("=========计算结束=========");

}

}

throws标识此方法出异常但不处理,谁调谁处理。

package com.swift;

public class Exception3

{

public static void main(String args[]) throws Exception{

Operate o=new Operate();

System.out.println("=============计算之前==============");

int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));

System.out.println("计算结果"+temp);

System.out.println("=============计算之后==========");

}

}

class Operate

{

public int div(int i,int j) throws Exception{

int temp=i/j;

return temp;

}

}

如果main也throws了,异常抛给了JVM,其实你一个throws不写,JVM依然会默默地处理着异常

注意:一旦方法throws,main必须有回应,否则编译不过。main继续抛相当于出异常之后的程序戛然而止(没有"=============计算之后=========="),这时可用catch捕获抛来的异常进行处理。

package com.swift;

public class Exception3

{

public static void main(String args[]) throws Exception{

Operate o=new Operate();

System.out.println("=============计算之前==============");

try {

int temp=o.div(Integer.parseInt(args[0]),Integer.parseInt(args[1]));

System.out.println("计算结果"+temp);

}catch(Exception e){

System.out.println("出现了什么异常情况 "+e);

}

System.out.println("=============计算之后==========");

}

}

class Operate

{

public int div(int i,int j) throws Exception{

int temp=i/j;

return temp;

}

}

异常被处理,计算前后正常输出。

throw与throws不同,throw抛出的不是异常类,而是对象,可以人造的对象。

package com.swift;

public class Exception4 {

public static void main(String args[]) {

try {

throw new Exception("抛着玩呢 "); // 抛出人造异常对象

} catch (Exception e) { // 再捕捉这个对象

System.out.println("你抛的是什么呢?"+e);

}

}

}

如果不想抛Exception类的对像,要抛自己的

package com.swift;

public class Exception5 {

public static void main(String args[]) {

try {

throw new MyException("自定义异常。");

} catch (Exception e) {

System.out.println("这个异常是 " + e); // e.printStackTrace();

}

}

}

//通过继承实现自己的异常类

class MyException extends Exception {

public MyException(String msg) {

//把参数传给父类

super(msg);

}

}

🎈 相关推荐

手游龙之谷怎么卖龙币 龙之谷手游怎么摆摊
传统纹样色彩搭配,蕴含着深远的意义
365bet外围网站

传统纹样色彩搭配,蕴含着深远的意义

📅 07-01 👀 8847
赣烟价格表图 赣烟价格表一览
365bet外围网站

赣烟价格表图 赣烟价格表一览

📅 07-18 👀 4318