举例说明Java的异常处理机制,包括积极与消极的处理方式,并用注释的方...

默认分类 未结 1 1646
_Datura丶私欲
_Datura丶私欲 2023-03-18 09:22
相关标签:
1条回答
  • 2023-03-18 10:08

    异常处理

    1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 5 list_l=['g','h'] 6 data={'一':'3'} 7 try: 8 #list_l[3]#IndexError: list index out of range 9 data['2q']10 except IndexError as e:#列表下标超出边界11 print(e)12 except KeyError as e:#字典key 不存在13 print('没有这个KEY',e)14 except Exception as e:##大部分异常都可捕获15 print(e)16 else:#结合使用17 print('以上正常')18 finally:19 print('最后都要打印')

    异常类型:

    '''''常用异常AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是无法打开文件ImportError 无法引入模块或包;基本上是路径问题或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError 试图访问字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 使用一个还未被赋予对象的变量SyntaxError Python代码非法,代码不能编译TypeError 传入对象类型与要求的不符合UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError 传入一个调用者不期望的值,即使值的类型是正确的'''''自定义异常 1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 5 class NewException(Exception):#继承基类异常 6 '''自定义异常信息''' 7 def __init__(self,msg): 8 self.message=msg 9 10 def __str__(self):#可不定义,基类已有11 #return self.message#返回异常信息12 return '触发自定义异常......'#13 14 try:15 raise NewException('触发自定义异常')16 except NewException as e:17 print(e)

    socket通讯

    消极:使用throws抛出异常使用throws抛出异常的思路是:当前方法不知道如何处理这种类型的异常,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用使用throws声明抛出异常,该异常将交给JVM来处理。JVM对异常的处理方法:打印异常跟踪栈的信息,并终止程序运行,所以有很多程序遇到异常后自动结束。积极:使用throw抛出异常当程序出现错误时,系统会自动抛出异常,另外,java也允许程序自行抛出异常,自行抛出异常使用throw语句完成!抛出异常:如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。throw语句的格式如下:throw ExceptionInstance;throw语句抛出异常的两种情况:1.当throw语句抛出的异常是Checked异常,则该throw语句要么处于try块里显式捕获该异常,要么放在一个带throws声明抛出的方法中,即把异常交给方法的调用者处理。2.当throw语句抛出的异常是Runtime异常,则该语句无须放在try块内,也无须放在带throws声明抛出的方法中,程序既可以显式使用try...catch来捕获并处理该异常,也可以完全不理会该异常,把该异常交给方法的调用者处理。

    这是编程者对待异常的两种原则,不是什么语法!消极的处理:就是“我”不管了,直接throws出来。积极的处理:就是根据异常的情况进行程序修正,使得本处理单元还能够工作。

    0 讨论(0)
提交回复