8.1异常概述
throwable
errorn 错误
exception 异常
运行时异常 是 runTimeException类及其子类
非运行时异常 是 runTimeException类及其子类以外的异常
public class H8_1 {
public static void main(String[] args) {
int result = 3 /0;
System.out.println(result);
}}
package holleJAVA;
public class H7_1{//创建类
public static void main(String[] args) {//主方法
String str ="lili";//定义字符串
System.out.println(str+"年龄是:");//输出的提示信息
int age =Integer.parseInt("20L");//数据类型的转换
System.out.println(age);//输出信息
}
}
8.3.1 try...catch 代码块
其中,try代码块中是可能发生异常的Java代码;catch代码块在try代码块之后,用来激发被捕获的异常;finally代码块是异常处理结构的最后执行部分,无论程序是否发生异常,finally代码块中的代码都将执行,因此,在 finally 代码块中通常放置一些释放资源、关闭对象的代码。
通过try…catch 代码块的语法可知,捕获处理异常分为try….catch 代码块和 finally 代码块两部分
public class H8_3 {
private int playerNum;//定义球员数量
private String teamName;//定义球队名称
public void FootballTeam()//构造方法Footballteam()
{//寻找教练类
Class.forName("com.mrsoft.Coach");
}
public static void main(String[] args) {
H8_3 team = new H8_3();//创建对象 team
team.teamName = "com.mrsoft";//初始化teamName
team.playerNum = 19;//初始化playerNum
System.out.println("\n球队名称:"+ team.teamName + "\n"+ "球员数量:"+ team.playerNum+"名");
}
}
public class H8_4 {//创建主类
public static void main(String[] args) {
// TODO Auto-generated method stub
try {//try语句中包含可能出现异常的程序代码
String str ="lili";//定义字符串变量
System.out.println(str +"年龄是:");//输出的信息
int age =Integer.parseInt("20L");//数据类型转换
System.out.println(age);
} catch (Exception e){//catch代码快用来获取异常信息
e.printStackTrace();//输出异常性质
System.out.println("program over");//输出信息
}
}}
public class H8_4 {//创建主类
public static void main(String[] args) {
// TODO Auto-generated method stub
try {//try语句中包含可能出现异常的程序代码
String str ="lili";//定义字符串变量
System.out.println(str +"年龄是:");//输出的信息
int age =Integer.parseInt("20L");//数据类型转换
System.out.println(age);
} catch (NumberFormatException nfx) {//捕捉NumberFormatException异常
nfx.printStackTrace();
} catch (Exception e){//Exception异常
e.printStackTrace();//输出异常性质
System.out.println("program over");//输出信息
}
}}
package holleJAVA;
public class H8_5 {//创建主类
public static void main(String[] args) {
// TODO Auto-generated method stub
try {//try语句中包含可能出现异常的程序代码
String str ="lili";//定义字符串变量
System.out.println(str +"年龄是:");//输出的信息
int age =Integer.parseInt("20L");//数据类型转换
System.out.println(age);
} catch (Exception e){//catch代码快用来获取异常信息
e.printStackTrace();//输出异常性质
} finally {
System.out.println("program over");//输出信息
}
}}
程序在捕捉完异常信息之后,会执行finally代码中的代码。
在以下3种特殊情况下,finally块不会被执行
在finally代码块中发生了异常。
在前面的代码中使用了System.exit()退出程序
程序所在的线程死亡。
8.4 在方法中抛出异常
8.4.1使用throws关键词抛出异常
public class H8_6 {
static void pop() throws NegativeArraySizeException {
//定义法并抛出NegativeArraySizeException异常
int[] arr =new int[-3];}//创建数组
public static void main(String[] args) {//主方法
try {//try语句处理异常信息
pop();//调用pop()方法
}catch (NegativeArraySizeException e) {
System.out.println("pop()方法抛出的异常");//输出异常现象
}
}
}
public static void main(String[] args) { // 主方法
int num1 = 25; //定义初值
int num2 = 0; //定义初值
int result; //定义初值
if (num2 == 0) // 判断num2是否等于0,如果等于0,抛出异常
{
throw new ArithmeticException("这都不会,小学生都知道:除数不能是0!!!");
}// 抛出ArithmeticException异常
result = num1 / num2; // 计算int1除以int2的值
System.out.println("两个数的商为:" + result);//输出两个数的商
}
}
public class BBBB8 { //定义方法,抛出自定义的异常
static void avg(int age) throws BBB8{//抛出BBB8异常错误
if(age<0) { //判断方法中参数是否满足指定条件
throw new BBB8("年龄不可以使用负数");//错误信息
}else { //反之
System.out.println("王师傅今年"+ age +"岁了!");//输出王师傅今年多少岁
}
}
public static void main(String[] args) { // 主方法
try { //try代码块处理可能出现异常的代码
avg(-50); //负数
}catch(BBB8 e) { //捕捉错误信息
e.printStackTrace(); //输出异常性质
}
}}