实验六 Java异常
- 实验目的
- 理解异常的基本概念;
- 掌握异常处理方法及熟悉常见异常的捕获方法。
- 实验要求
- 练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch子句的使用。
- 掌握自定义异常类的方法。
- 实验内容
- 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。
- 自定义异常类的使用
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
技术方案:
编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。
package id; import java.util.*; public class hope { public static void main(String[] args) { int score[]=new int [9]; Scanner out = new Scanner(System.in); int n = out.nextInt(); try{ for(int i=0;i<9;i++){ score[i]=i+1; } System.out.println("score["+n+"]="+score[n]+" "); }catch(ArrayIndexOutOfBoundsException a){ System.out.println("越界:"+a); }finally{ System.out.println("处理完毕"); } } }
package id; class DangerException extends Exception{ public void examination() { System.out.println("易燃易爆危险物品"); } } class thing{ private boolean Danger; private String name; public Object getName; public Goods(boolean Danger,String name) { this.Danger=Danger; this.name=name; } public boolean Danger() { return Danger; } public void setName(String name) { this.name=name; } public String getName() { return name; } } class Machine{ public void checkBag(thing goods)throws DangerException{ if(goods.Danger()) throw new DangerException(); else System.out.println(goods.getName()+"不是易燃易爆危险品"); } } public class hope{ public static void main(String[] args){ Machine mac=new Machine(); thing goods=new Goods(false, null); String a[]={"c4","打火机","笔记本电脑"}; for(int i=0;i<a.length;i++) { goods.setName(a[i]); if(a[i].equals("c4")||a[i].equals("打火机")) { goods.Danger(); System.out.println(a[i]+"是易燃易爆危险品"); } else goods.Danger(); } try { mac.checkBag(goods); }catch(DangerException e) { e.examination(); } } }
学习总结
throw与throws的区别与共同点
1.throws出现在方法函数头,throw出现在函数体。
2.throws表示出现异常的一种可能(不一定会发生这些异常),throwthrow则一定抛出了某种异常对象。
3.throw不会单独使用
两者都是消极处理异常的方式,不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
Thread类与Runnable接口
Thread类:Thread对象代表Java程序中单个的运行线程。一个类通过继承Thread类,同时重写其run()方法,就可以实现多线程的方式运行,并继承Thread类的所有方法。Run()方法是运行线程的主体,且由Java直接调用run()方法。
Runnable接口:Runnable接口中只定义了一个方法,即为run方法void run()使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。
Thread类runnable接口的区别(不太好解释举个栗子把)
继承Thread类的,就是将任务分给每一个对象来分别完成,因为MyThread继承Thread类,所以在new MyThread的时候在创建对象的同时创建线程;
实现Runnable的, 就是将任务分给多个对象共同完成,new MyThread相当于创建一个任务,然后实例化多个对象,创建线程即安排窗口执行。
try 和 catch 关键字
try 和 catch 关键字是用来捕获异常的关键字
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。
如果try里没有代码,或者没有try,出现异常会导致程序崩溃。
Throwable的子类Exception类与RuntimeException类的区别
1、Exception在程序中是必须使用try…catch进行处理。
2、RuntimeException可以不使用try…catch进行处理,但是出现异常要给JVM进行处理
原文地址:https://www.cnblogs.com/lpf666/p/11701675.html