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();   //输出异常性质
    }
   }}