初学者——异常

Posted tkzm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者——异常相关的知识,希望对你有一定的参考价值。

异常

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

JAVA中的异常处理

技术图片

异常处理的五个关键字

  • try
  • catch
  • finally
  • throw
  • throws

异常对象常用的方法

技术图片

常见的异常类型

 技术图片

多重catch块

排列catch 语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句

    
        catch (InputMismatchException e) //子类写在前面
            System.out.println("输入整数");
            e.printStackTrace();
        catch (Exception e) //父类写在后面
            System.out.println("输入错误");
            e.printStackTrace();
        
        finally
            System.out.println("欢迎提出建议");//无论程序有没有异常都输出
        

 

throw与throws 

技术图片

异常处理原则

异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理

异常结构图

技术图片

异常链

 

//新建两个自定义Exception类
public class FkException extends Exception//第一个自定义付款类
//重写Exception里的两个方法
    public FkException(String message, Throwable cause) 
        super(message, cause);
        // TODO Auto-generated constructor stub
    

    public FkException(String message) 
        super(message);
        // TODO Auto-generated constructor stub
    


//第二个自定义购物车类
class GwException extends Exception
    public GwException(String message, Throwable cause) 
        super(message, cause);
        // TODO Auto-generated constructor stub
    

    public GwException(String message) 
        super(message);
        // TODO Auto-generated constructor stub
    


//新建一个购物车的类方便传参数
public class Gwc 
    private String shangpin;
    private int money;
    public String getShangpin() 
        return shangpin;
    
    public void setShangpin(String shangpin) 
        this.shangpin = shangpin;
    
    public int getMoney() 
        return money;
    
    public void setMoney(int money) 
        this.money = money;
    

//新建一个购物车的方法把建好的Gwc类当参数放进去
public static void gwc(Gwc gwcs) throws GwException 
        if(gwcs==null)
            throw new GwException("购物车不能为空");//抛出异常
        else
            System.out.println("添加成功");
        
    

//在新建一个付款类继续抛出一个异常

public static void fukuan(Gwc gwcs) throws FkException
try
gwc(gwcs);

catch (GwException e)
e.printStackTrace();
throw new FkException("付款不能为0");


 
//我们去main方法里去调用写的方法
public static void main(String[] args) 
        Gwxt s=new Gwxt();
        try 
            s.fukuan(null);
         catch (Exception e) 
            e.printStackTrace();
        

//下图则是控制台打印出来的结果,可以看到并没有关联起来,我们可以修改一下
技术图片
public static void fukuan(Gwc gwcs) throws FkException
        try 
            gwc(gwcs);
            
         catch (GwException e) 
            e.printStackTrace();    
            throw new FkException("付款不能为0",e);
            //修改之后的代码,把e添加到抛出的异常里
        
    
//如下就是我们想要的结果了
技术图片

 

 

 

小提示

printStackTrace();打印异常堆栈信息

exit(1)  退出虚拟机

try-catch块中存在return语句,是否还执行finally块? 如果执行,说出执行顺序?

先执行finally然后再回去执行return

try-catch- finally块中, finally块唯一不执行的情况是什么?

exit(1) 

try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一

以上是关于初学者——异常的主要内容,如果未能解决你的问题,请参考以下文章

异常和TCP通讯

片段中的Android致命异常

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段

片段中的getView()导致抛出异常,不确定原因