JAVA之异常

java中有三种错误:

    1.语法错误(编译错误):
          在ide(集成开发环境)工具(ecpise,myecplise等)中写代码,代码写错了,在,工具中用红波浪线或者红叉来表
          示,如果现实红波浪线,此代码不能通过工具进行编译,不能编译,就不能执行
    2.逻辑错误
           前提是语法没有错误,可以编译运行,但运行结果错误,一般
           原因是代码的逻辑写错了,导致执行结果和预期结果不一致
    3.运行错误/异常/例外:
          前提是语法和逻辑没有错误,但在运行期间,因为某种原因导致程序异常终止
          比如:
              Int num1,num2;//这两个值从键盘录入
              Int result = num1/num2;//
              如果num2录入的是非零值,程序可以正常运行,没有异常
              如果num2录入的是零,代码逻辑正确,但是有异常,程序会终止
           

处理异常的两个目的:
      1.避免程序异常终止
      2.如果出现异常,程序不能终止,还要给一个友好合理的提示
    
程序意外的终止:
    就是程序执行到某一行位置的时候就不执行了,jvm就不继续执行此程序了
    
处理方案有两种:
      方案一:
          用java代码提供的异常处理机制 try catch finally
      方案二:
          用java的逻辑代码来处理,即,用java代码容错

用java 的try catch finally 的一些相关的注意事项:
       一般情况下,try块中监的代码需要程序员猜测try块中有多少种可能的异常,try块中的代码可能有n中异常,
     那么就在try块的下面写n个catch,且catch抓取的异常类型是不同的,如果发生了异常,但是没有catch来抓
     住,程序还是会意外终止,为了解决这个问题,需要添加第n+1个catch,这个catch的异常类型是Exception异
     常类型,即catch(Exception e),且此catch必须放在所有catch的最后
      一个try可以有0个或1个或多个catch
      一个try可以没有catch但必须有finally
    
什么是finally:
       finally块中放置若干java代码,一般情况下,finally块中的代码是用来释放
       try块中申请的内存空间
 
try catch finally执行顺序:    
   try块中如果有异常,会抛出异常,在某个catch块接收到系统抛出的异常(必须保证catch抓取的异常类
   型,跟抛出的异常类型相同),然后对应catch块中的代码就被执行了,catch块一般有两类代码,一个是栈
   的轨迹(e.printStackTrace();),另一个是有好的交互或提示的代码执行完当前的catch块中的代码,会
   跳过后面所有的catch块,执行finally块中的代码,执行完finally块的代码后,继续执行finally块后面
   的代码,即使没有异常,最终会执行finally块中的代码,销毁用户申请的内存空间    

异常的继承层次:
    顶级类:Throwable
        Throwable类有两个子类:
        Error类:不是程序员能使用的,一般情况下是给JVM使用的
            比如:
                要往U盘中写入一个文件,但没有U盘这个设备
                异常错要抛给JVM处理
        Exception类:是程序员能够写代码处理的异常的根类
            分为两类:
                -免检异常:不是必须添加try catch finally的程序是能够编译和执行的,
                        但执行时触发的符合的异常程序还是意外终止
                RuntimeException    运行时异常
                ArithemthicException    算术异常
                NullPointerExceotion    空指针异常
                ArrayIndexOutofBoundsException    数组下标越界异常
                NumberFormatException    数字格式异常
                InputMismatchException    输入不匹配异常
                ...
                    
                -必检异常:必须添加 try catch finally,如果不添加,则会有红波浪线
                        提示,说明程序是不能编译和执行的
                Exception    所有程序员能处理的异常根类
                SQLException    sql异常
                ClassNotFoundException    类没有发现异常
                FileNotFoundException    文件没有发现异常
                ...
如何判断异常时是免检还是必检
    如果程序员在写代码的时候,代码没有错误,担报了红波浪线
    并提示"Unhandled exception type XXXException"
            无法处理    异常    类型    具体的异常类型
    只要提示这句话,那么久属于必检异常,必须添加try catch 否则红波浪线不会消失
    快捷键 alt + shirt + z 来调用代码块的模板
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值