package com.itheima;
public class Test6 {
/**
* 6、 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,
* 在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC, 有一个方法为c
* ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。
*/
/**
* 异常处理机制:
* java中的异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。其中,
*
* try关键字后紧跟一个花括号括起来的代码块(花括号不可省略)简称为try块。里面放置可能发生异常的代码。
*
* catch后对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块。多个catch块后还可以跟一个finally块。
*
* finally块用于回收再try块里打开的物理资源,异常机制会保证finally块总被执行。
*
* throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常
*
* throw用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体异常对象。
*
* java异常分为两种:Checked异常和Runtime异常。
*
* java认为Checked异常都是可以在编译阶段被处理的异常,所以它强制程序处理所有的Checked异常,而Runtime异常则无需处理。
*
* Checked异常可以提醒程序员需要处理所有可能发生的异常,但Checked异常也带来一些繁琐之。
*
* 对于错误处理机制,主要有如下的两个缺点:
*
* 1.无法穷举所有异常情况:因为人类的知识是有限的,异常情况总比可以考虑到的情况多,总有漏网之鱼
*
* 2.错误处理代码和业务实现代码混杂严重影响程序的可读性,会增加程序维护的难度。
*
* java的异常处理机制:实现将“业务功能代码”和“错误处理代码”的分离!
*
* */
public static void main(String[] args) {
//创建一个c类的对象,然后调用类的方法,输出捕获的异常
ClassC c = new ClassC();
c.methodC();
}
}
class ClassA
{
public static void methodA()throws Exception
//抛出异常 这就是说有问题了,methodA不管,methodA把问题扔给调用methodA的地方
{
ClassB.methodB();
}
}
class ClassB
{
public static void methodB() throws Exception
{
// .....一些什么
throw new Exception(" throw by ClassB.methodB ");
}
// 或则,methodB和methodA一样
public static void methodB2() throws Exception
//抛出异常 这就是说有问题了,methodA不管,methodA把问题扔给调用methodA的地方
{
// ....
这里有异常,程序会跳到methodB2() throw Exception,然后结束
//....
}
}
class ClassC
{
public static void methodC()
{
try {
//或ClassA.methodA();
ClassB.methodB();
}
// 捕捉异常的信息
// 这个就是说,如果出了问题,就来这里(catch)
catch(Exception e) {
// 处理问题了。
System.out.println(e.toString());
}
}
} |
|