关于异常处理的部分总结

Java异常体系结构 

    Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 


  其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 

    这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception) 
    和检查异常(Checked Exception)。下面将详细讲述这些异常之间的区别与联系: 

    1、Error与Exception 
    Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时, 
    Java虚拟机(JVM)一般会选择线程终止。 
    Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。 
    程序中应当尽可能去处理这些异常。 

    2、运行时异常和非运行时异常 
    运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等, 
    这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的, 
    程序应该从逻辑角度尽可能避免这类异常的发生。 
    非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。 
    从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。 

 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类;      不可以在不声明的情况下抛出非RuntimeException

try{

//尝试运行的程序代码

}catch(异常类型 异常的变量名){

//异常处理代码

}finally{

//异常发生与不发生都要执行的代码

}

  1. try语句块,表示要尝试运行代码,try语句块中代码受异常监控 


 使用trycatch关键字可以捕获异常。try/catch代码块放在异常可能发生的地方。
try/catch代码块中的代码称为保护代码,使用 try/catch的语法如下:

try
{
   //Protected code
}catch(ExceptionName e1)
{
   //Catch block
}
catch语句带一个Throwable类型的参数,  表示可捕获异常类型。

当try中出现异常时,catch会捕获到发生的异常,并和自己的异常类型匹配, 
    若匹配,则执行catch块中代码,并将catch块参数指向所抛的异常对象。

catch语句可以有多个, 下面是示例代码:

try
{
   //Protected code
}catch(ExceptionType1 e1)
{
   //Catch block
}catch(ExceptionType2 e2)
{
   //Catch block
}catch(ExceptionType3 e3)
{
   //Catch block
}
    用来匹配多个中的一个异常,一旦匹配上后,就不再尝试匹配别的catch块了。 
    通过异常对象可以获取异常发生时完整的JVM堆栈信息,以及异常信息和异常发生的原因等。 

    finally语句块是紧跟catch语句后的语句块,这个语句块总是会在方法返回前执行, 
    而不管是否try语句块是否发生异常。并且这个语句块总是在方法返回前执行。 
    目的是给程序一个补救的机会。这样做也体现了Java语言的健壮性。 

一、在finally块中做数据回收操作

二、不要在异常finally块中定义返回值

三、覆写Exception的fillInStackTrace方法能提高异常性能

如果一个方法没有捕获一个检查性异常,那么该方法必须使用throws 关键字来声明。throws关键字放在方法签名的尾部。
也可以使用throw关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

声明自定义异常:

在Java中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
  • 所有异常都必须是Throwable的子类。
  • 如果希望写一个检查性异常类,则需要继承Exception类。
  • 如果你想写一个运行时异常类,那么需要继承RuntimeException 类。
可以像下面这样定义自己的异常类:
class MyException extends Exception{
}
只继承Exception 类来创建的异常类是检查性异常类。
下面的InsufficientFundsException类是用户定义的异常类,它继承自Exception。
一个异常类和其它任何类一样,包含有变量和方法。


Throwable类中的常用方法 
    getCause():返回抛出异常的原因。如果 cause 不存在或未知,则返回 null。 
    getMessage():返回异常的消息信息。 
    printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的值。 

下面的列表是Throwable 类的主要方法:

序号 方法及说明
1 public String getMessage()
返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。
2 public Throwable getCause()
返回一个Throwable 对象代表异常原因。
3 public String toString()
使用getMessage()的结果返回类的串级名字。
4 public void printStackTrace()
打印toString()结果和栈层次到System.err,即错误输出流。
5 public StackTraceElement [] getStackTrace()
返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。
6 public Throwable fillInStackTrace()
用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中
其中关于日志文件的我还没有学,下次再总结。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 的异常处理机制允许程序员在程序中捕获和处理异常。异常是在程序运行时发生的特殊情况,例如访问列表越界、除以 0 等。异常处理可以帮助程序员避免程序意外崩溃,并且可以提供有意义的错误信息给用户。 Python 使用 try 和 except 关键字来处理异常。使用 try 块来指定需要被检查的代码,使用 except 块来处理异常。例如: ``` try: # 代码块 except ExceptionType: # 异常处理代码块 ``` 如果在 try 块中发生异常,那么程序会跳转到 except 块并执行 except 块中的代码。如果没有发生异常,则 except 块不会执行。你可以使用多个 except 块来处理不同类型的异常。 Python 还提供了一个可选的 else 块,它在 try 块中没有发生异常时执行。你还可以使用 finally 块来在 try、except 和 else 块之后执行代码。 例如: ``` try: # 代码块 except ExceptionType: # 异常处理代码块 else: # 没有异常时执行的代码块 finally: # 无论是否发生异常都会执行的代码块 ``` ### 回答2: Python 的异常处理机制是一种用于处理程序运行过程中可能出现的错误或异常情况的机制。在程序执行过程中,如果出现了异常,则可以通过异常处理机制捕获并处理这些异常,以避免程序崩溃或产生不可预料的结果。 Python 中的异常处理机制主要包括两个关键字:try 和 except。通过使用 try 关键字包围可能出现异常的代码块,程序会尝试执行这部分代码,如果没有发生异常,则正常执行后续的代码;而如果发生了异常,则会跳出当前代码块,并根据异常类型执行对应的 except 代码块。 在 except 代码块中,可以指定捕获的异常类型,以及相应的处理逻辑。当发生异常时,Python 会按照代码中 except 代码块的顺序进行匹配,如果找到与异常类型相符合的 except 代码块,则执行该代码块中的逻辑;如果找不到匹配的 except 代码块,则异常将会被抛出并终止程序的执行。 除了基本的异常处理方式外,Python 还提供了一些高级的异常处理方式。其中,可以使用 else 关键字在没有发生异常时执行额外的代码;使用 finally 关键字在无论是否发生异常时都会执行的代码;还可以使用 raise 关键字手动触发异常。 异常处理的好处在于它能够使程序更加健壮,能够在出现异常时及时捕获并处理,有效避免程序的崩溃。同时,异常处理还可以提高代码的可读性和维护性,使得代码更加清晰明了。 总结来说,Python 的异常处理机制通过 try 和 except 关键字,可以捕获并处理程序中出现的异常,保证程序的正常执行,提高代码的健壮性和可维护性。 ### 回答3: Python异常处理机制是一种用于编写稳健程序的重要工具。在Python中,异常是指程序运行过程中可能出现的错误或异常情况。当程序出现异常时,如果不进行处理,程序将崩溃并输出错误信息。为了优雅地处理异常,Python提供了一套异常处理机制。 在Python中,使用try-except语句块来捕捉和处理异常。try块中包含可能引发异常的代码,而except块则用于处理异常。当try块中的代码执行时,如果出现异常,程序会跳转到与其匹配的except块,并执行相应的处理逻辑。可以使用多个except块来处理不同类型的异常,也可以使用一个except块来捕获多个异常类型。 在except块中,可以编写处理异常的代码逻辑。这些代码将在异常出现时执行,可以用于记录日志、输出错误信息等。如果except块中的代码成功执行,程序将继续执行后续代码。如果except块中的代码出现错误,那么该错误将继续向上级代码抛出,直到找到匹配的异常处理块或程序结束。 除了try-except语句块,Python还提供了finally语句块。finally语句块中的代码块始终会被执行,无论是否出现异常。通常情况下,finally语句块用于执行清理操作,如关闭文件、释放资源等。 在使用异常处理机制时,应该尽可能具体地捕获异常类型,而不是简单地使用通用的异常处理语句。这样可以更好地定位和处理异常,提高程序的健壮性和可靠性。 总之,Python的异常处理机制是一种用于处理和优雅处理程序中出现的异常的重要工具。合理使用异常处理机制可以提高程序的稳定性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值