【自学java笔记#第二十八天#】Java的异常处理机制

选用教材:《Java核心技术卷一》

第七章 异常、断言和日志

一、异常的几种类型

1、Throwable类的几个分支

①Error:运行时系统内部错误、资源耗尽错误等;

②Exception:异常;

2、Exception的几个分支

①IOException:I/O错误;

②Runtime Exception:编程错误;

3、异常的几种类型

①非检查型异常:Error、RuntimeException;

②检查型异常:所有其他类型的异常。

我们能处理的是检查型异常。

二、处理异常的几种方法

1、throws子句

直接在有可能抛出异常的方法名后增加一个throws子句,例如:

Public void main (String[] args) throws IOException

{

}

2、try-catch语句块

try语句里放的是要执行的逻辑,catch语句则是用来捕获异常的。

3、try-with-Resources语句

这一种形式最为常见,例如:

try(var in=new Scanner(System.in))

{

......    //代码块

}

三、一些有关于异常的练习题

1、计算圆的面积,半径不能为0和负数。

package stackTrace;

import java.util.Scanner;

/**
 * 计算圆的面积,半径不能为0和负数。
 * @author Administrator
 *
 */

public class CircleArea 
{
    public static void main(String[] args) throws NumberException
    {
        try(var in=new Scanner(System.in))
        {
            System.out.print("请输入圆的半径:");
            double n=in.nextDouble();
            if(n<=0)
            {
                throw new NumberException();
            }
            System.out.println("圆的面积为(cm):"+CountingArea(n));
        }
        
        catch(NumberException e)
        {
            e.printStackTrace();
        }
        
    }
    
    public static double CountingArea(double n)
    {
        return n*n*Math.PI;
    }

}

2、求平均数,参数不能为负。

package stackTrace;

import java.io.IOException;
import java.util.Scanner;

/**
 * 求平均数,参数不能为负数
 * @author Administrator
 *
 */

public class AverageNum 
{
    public static void main(String[] args)
    {
        try(var in=new Scanner(System.in))
        {
            System.out.println("请依次输入3个正数:");
            double m=in.nextDouble();
            double n=in.nextDouble();
            double s=in.nextDouble();
            
            if(m<0 || n<0 ||s<0)
            {
                throw new IOException("你传了至少一个负数!");
            }
            
            else
            {
                AverageNum av=new AverageNum ();
                System.out.println("3个数的平均数是:"+av.CountingAvg(m, n, s));
            }
        }
            catch(IOException e)
            {
                e.printStackTrace();
            }
        
        
    }
    
    public AverageNum() 
    {
        // TODO Auto-generated constructor stub
    }
    
    public double CountingAvg(double m,double n,double s)
    {
        return (m+n+s)/3;
    }

}

猜你喜欢

转载自www.cnblogs.com/yizhinailu/p/12623087.html