IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 第 6 章 异常处理、递归 -> 正文阅读

[Java知识库]第 6 章 异常处理、递归

Java系列文章

第1章 绪论
第2章 结构化程序设计
第4章 数组、字符串、向量


提示:以下是本篇文章正文内容,下面案例可供参考

异常处理

一、介绍

什么是异常(Exception)?

异常是正常程序流程所不能处理或没有处理的异常情况或异常事件,也称为例外。

异常的分类

来源:
Java异常的分类和类结构图这里是引用
这里是引用

常见的异常

在这里插入图片描述
java常见的几种异常[通俗易懂]

二、异常处理中五个关键字

在这里插入图片描述

1.范例一

基础语句

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

举个栗子,使用其中四个关键字try、catch、finally、throw

public class J_ExceptionCatch
{
    public static void main(String args[ ])
    {
        try
        {
            System.out.println("try语句块");
            throw new Exception( );    //抛出异常
        }
        catch(Exception e)    //捕捉异常
        {
            System.err.println("catch语句块");
            e.printStackTrace( );    //输出异常的类型以及异常发生的方法调用堆栈跟踪信息
        }
        finally
        {
            System.out.println("finally语句块");
        } // try-catch-finally结构结束
    } // 方法main结束
} // 类J_ExceptionCatch结束

输出结果
在这里插入图片描述
如图
当catch语句块能捕捉到try语句块中抛出的异常
则try-catch-finally结构之后的代码会被执行,否则不会被执行
所以上图输出了“catch语句块”及输出异常的类型以及异常发生的方法调用堆栈跟踪信息

2.范例二

一个除数为0导致的异常

public class J_ExceptionCatchCase {
public static void main(String[] args) {
        int a= 10;
        int b = 0;
        System.out.println("a=" + a);
        System.out.println("b=" + b);
        try
           {        
                 System.out.println("try语句块");
                if(b==0)   
                     throw new ArithmeticException(“除数不能为0);   //抛出异常
                else     
                      System.out.println("a/b=" + a/b);
           }
        catch(ArithmeticException e)      //捕捉异常
          {
            System.out.println("catch语句块");
            System.out.println(e);  // 输出异常信息
          }
        finally
         { 
            System.out.println("finally语句块");
         } // try-catch-finally结构结束
    }
}

输出结果
在这里插入图片描述

3.要点

在这里插入图片描述

public class J_Test {
 public static void mb_createException() {
     throw new ArrayIndexOutOfBoundsException();
     }
 public static void mb_method() 
    {
        try
           { 
               mb_createException();  //方法调用后,抛出一个数组下标越界异常
               System.out.print("a");
           }
         catch(ArithmeticException e)  //没有捕获到数组下标越界异常
          { 
             System.err.print("b");  
           }
         finally
           {
             System.out.print("c");
           }
         System.out.print(“d”);  //上面未捕获到异常,这里不输出
  }
 public static void main(String[] args) {
    try
     { 
         mb_method();
     }
    catch(Exception e)   //捕获到抛出的数组下标越界异常
    { 
         System.err.print('m');
    }
     System.out.print(‘n’); //上面捕获到异常,这里会输出
  }
}

读者可以自己运行该类,看看输出与自己预期的是否一致
若不一致,则再仔细阅读上方要点

递归

一、介绍

如果在方法定义中直接或间接地调用该方法本身,就称为递归。

利用递归求解问题的基本思路:
(1)将要求解的原问题分解成规模较小的同类问题;
(2)将利用递归求解原问题转变成在分解之后产生的小规模同类问题上进行求解。

二、实例

问题范例

问题:求某个整数的Fibonacci数。
Fibonacci数的定义如下:
Fibonacci(1)=1;
Fibonacci(2)=1;
Fibonacci(3)=Fibonacci(2)+Fibonacci(1);
………
Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2); //n为大于2的整数

解决

public class J_Fibonacci
{
    public static int mb_fibonacci(int n)
    {
        if (n< 1)
            return(0);
        else if (n==1 || n==2)
            return(1);
        return(mb_fibonacci(n-1)+mb_fibonacci(n-2));
    } // 方法mb_fibonacci结束

    public static void main(String args[ ])
    {
        int n = 30;
        System.out.println("Fibonacci(" + n + ")=" + mb_fibonacci(n));
    } // 方法main结束
} // 类J_Fibonacci结束
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:26:14  更:2022-05-09 12:26:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:18:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码