Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 381|回复: 0

突如其来的"中断异常",我(Java)该如何处理?

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 756 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    707560
    发表于 2021-8-27 10:10:34 | 显示全部楼层 |阅读模式




    # **一、何为异常?**





    ## 1.生活中的实例

    生活中存在许多不正常:
    上班路上自行车掉链子
    上厕所手机掉马桶
    下班回家钥匙丢失
    。。。。。。。

    2.程序中的实例

    我们的代码中也许存在许多纰漏,导致用户使用时程序突然停止工作,例如下面简单的Java代码完成一个加法器:

    import java.util.Scanner;
    
    public class Count {
        public static void main (String []args){
    	 int a , b;
    	 Scanner read = new Scanner(System.in);
    
    	 System.out.print("请输入a:");
    	 a = read.nextInt();
    
    	 System.out.print("请输入b:");
    	 b = read.nextInt();
    
    	 System.out.println("a+b="+(a+b));
       }
    }
    

    看看输入数据会不会出现异常:

    • 当输入100和200时,运行正常:
    - 当输入100和a时,运行报错: ![](http://images2015.cnblogs.com/blog/833309/201610/833309-20161015111817031-2118418317.png)
    这就是Java中的异常,输入不合法,程序无法继续运行被迫终止,流程图如下:
    图片名称

    3.异常的概念

    异常:异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的。在Java等面向对象的编程语言中异常属于对象(Java语言中异常分为运行时异常(Exception)和编译型异常(Error))





    二、Java中异常处理机制







    ## 1.Java异常处理机制的概念

    Java异常处理机制就是程序代码执行过程中出现异常后,会按照我们预先制定的处理方法对异常进行处理,异常处理完成后程序会继续运行下去。

    dfa

    2.关键字trythrowthrowscatchfinally

    try: 尝试执行被此关键字作用的代码块A,若出现异常则忽略代码块A中剩下的代码。
    throws: 声明方法中将抛出的异常,通常在方法名后出现。
    throw: 手动抛出异常。
    catch: 捕获处理异常。
    finally:不论出现不出现异常都要此块代码都要执行。

    ![](http://images2015.cnblogs.com/blog/833309/201610/833309-20161015115119312-1087816146.png)

    3.try-catch

    try语句块中代码执行时发生三种情况:

    • try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行。
    import java.util.*;
    public class Count {
     	    public static void main (String []args){
    	        int a , b;
    	        Scanner read = new Scanner(System.in);
    	        try{
    		        System.out.print("请输入a:");
    		        a = read.nextInt();
    		        System.out.print("请输入b:");
    		        b = read.nextInt();
    		        System.out.println("a+b="+(a+b));
    	        }catch(InputMismatchException ex){
    		        System.out.println("不可以,请输数字!");
                    }
                    System.out.println("<<<<欢迎使用!>>>>");
    	    }
    }
    

    输入100和200后程序顺利进行!

    • try语句块中代码执行过程中产生异常,并且该异常跟catch中声明的异常类型相符合,那么try语句块中剩余的代码将被忽略,catch语句块的代码将被执行。
      还是上面代码,输入100和a后程序运行如下:
    - **try**语句块中代码执行过程中产生异常,但是抛出的异常并没有在**catch**语句块中声明,那么这个时候程序会立刻终止。

    4.try-catch-finally

    catch子句后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行。

    • 代码示例:
    import java.util.*;
    
    public class Count {
    	 public static void main (String []args){
    		int a , b;
    		Scanner read = new Scanner(System.in);
    		try{
    			System.out.print("请输入a:");
    			a = read.nextInt();
    			System.out.print("请输入b:");
    			b = read.nextInt();
    			System.out.println("a+b="+(a+b));
    		}catch(Exception ex){
    			System.out.println("不可以,请输数字!");
    
    		}finally{
    		System.out.println("<<<<欢迎使用!>>>>");
    		}
    	 }
    }
    
    • 运行结果:

    5.多重catch

    • 一段代码可能会产生多个异常。
    • 依次对每个catch块声明的异常对象进行检查,找到执行第一个与try抛出的异常类型匹配的catch块,之后的catch块将被忽略。
    • 异常子类一定要位于异常父类之前,如下图:
    sdfas


    posted @ 2016-10-15 12:43  CN_Simo  阅读( 1671)  评论( 0编辑  收藏
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-7-1 01:59 , Processed in 0.059946 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表