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 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Excise1_Exception -> 正文阅读

[PHP知识库]Excise1_Exception

1.阅读下列程序代码段:
try {
RandomAccessFile raf = new RandomAccessFile(“c:/a.txt”, “rw”);
raf.write(‘A’);
raf.writeInt(300);
System.out.println(raf.getFilePointer());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); }
该程序输出的结果是( )。
A.1
B.2
C.5
D.4

2.在异常处理中,如释放资源、关闭文件、关闭数据库连接等由( )来完成。
A.try子句
B.catch子句
C.finally子句
D.throw子句

3.下列异常类中,属于RuntimeException的子类的是:( )。
A.FileNotFoundException
B.IOException
C.ClassCastException
D.ArrayIndexOutOfBoundsException

4.对于catch子句的排列,下列哪种是正确的( )
A.父类在先,子类在后
B.子类在先,父类在后
C.有继承关系的异常不能在同一个try程序段内
D.只能有子类异常

5.String[] arr = new String[3];
System.out.println(arr[0].length());
运行结果是( )。
A.会出现编译错误。
B.运行期会抛出ArithmeticException异常
C.运行期会抛出IOException异常
D.运行期会抛出NullPointerException异常// 引用类型初始值为null,

6.下列代码编译和运行的结果是:( )。
public static void main(String[] args) {
try {
String[] s=null;
s[0] = “test”;//运行才会NullPointerException
System.out.println(s[0]);
} catch (Exception ex) {
System.out.println(“Exception”);
} catch (NullPointerException npe) {//编译报错。
System.out.println(“NullPointerException”);
}
}
A.输出:test
B.输出:Exception
C.编译失败
D.输出:NullPointerException
解析: catch (NullPointerException npe) 编译报错,多个catch的异常之间若存在继承关系,一定要先捕获子类异常,再捕获超类异常,否则编译不通过。异常之间没有关系捕获异常时可以随意声明位置

简答题
1.java中的异常处理机制有几种?怎么实现?
答:处理机制有两种:
一:使用try-catch捕获并处理异常
实现:
try{
可能出现异常的代码块
}catch(XXXException e){
处理try中出现的XXXException的代码方案
}
二:使用throws抛出异常。由调用者处理该异常,调用者也可以继续往外抛出该异常或者使用try-catch处理

2.Error和Exception的区别
Error 是系统级错误,是Java运行环境内部错误或者硬件问题,不能通过程序来处理这样的问题,发生错误时程序退出运行。它是Java虚拟机抛出的,比如虚拟机内存溢出等

Exception是程序需要处理的异常,由于程序设计的不完善(程序员逻辑问题)而出现的问题,程序必须进行处理,比如空指针异常,数组下标越界异常等。
通常程序中处理的异常都是Exception

3.RuntimeException和CheckedException的区别
CheckedException是编译时异常(检查异常),java 语言强制要求处理的所有非运行时异常,例如IOException ,SQLException
运行时异常(非检查异常 UnChecked) --RuntimeException,一般是由于程序逻辑错误引起的,比如算术异常,空指针异常等待。

4.final、finally、finalize的区别
final 可以修饰属性,方法,类。
final修饰属性为常量,初始化后不可被修改。
final修饰方法可被继承不能被重写。
final 修饰类不能被继承。

finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终一定被执行,经常被用在需要释放资源,关闭文件,关闭数据库连接的情况下。

finalize是方法名,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。

5.throw 与 throws 的区别
区别:
1.throw 声明位置在方法体内,后面跟的是异常类的实例(new XXXException(”异常信息描述“)),只能有一个;
throws 声明位置在方法声明后,后面跟的是异常类名。
2.throw 后面只能抛出一个异常对象名,throws同时抛出多个异常时中间用“,”逗号隔开。

throw 和 throws 联系:
1.如果方法中有throw 抛出的RuntimeException 及其子类对象,则方法声明上可以没有throws,(由该方法的调用者处理该异常),除此之外,方法声明上必须有throws

6.java 中如何编写自定义异常?
定义自定义异常 需要注意以下几点:
1.类名定义时要做到见名知意
2.需要继承自Exception,直接或间接继承都可以
3.提供继承自Exception中提供的所有构造器

7.说出9个常见的异常。
①数字格式异常NumberFormatException
②算术异常ArithmeticException
③数组下标越界异常ArraysIndexOutOfBounds
④字符串下标越界异常StringIndexOutOfBounds
⑤空指针异常NullPointerException
⑥类型格式异常ClassFormatException
⑦文件找不到异常NotFoundFileException
⑧引用类型强制转换异常ClassCastException
⑨IllegalArgumentException非法参数异常

编程题
1.模拟用户登录案例。接收用户输入的账号、密码,封装login方法用于验证登录。 --数据可自行模拟
如果账号密码均正确,显示登录成功,否则抛出对应异常,并给出提示信息。

  • 注:需自定义两个异常UserNameNFException(用户名未找到异常)、PwdNFException(密码未找到异常),分别处理用户名的错误和密码的错误。
/**
 * 1.模拟用户登录案例。接收用户输入的账号、密码,封装login方法用于验证登录。  --数据可自行模拟
 * 如果账号密码均正确,显示登录成功,否则抛出对应异常,并给出提示信息。
 * 注:需自定义两个异常UserNameNFException(用户名未找到异常)、PwdNFException(密码未找到异常),
 * 分别处理用户名的错误和密码的错误。
 * @author yyc
 * 2021/9/18 17:37
 */
public class TestLogin {
    public static void main(String[] args) throws UserNameNFException, PwdNFException {
        User[] users = new User[3];
        users[0] = new User("1474734090", "123abc");
        users[1] = new User("2982046836", "abc123");
        users[2] = new User("3240935383", "123456");
        Scanner scan =  new Scanner(System.in);
        System.out.println("请输入账号:");
        String id = scan.nextLine();
        System.out.println("请输入密码:");
        String password = scan.nextLine();
        User cust = new User(id,password);
        for (int i = 0; i < users.length; i++){
            if (cust.Login(users)){
                System.out.println("登陆成功!");
                break;
            }
        }
    }
}
package JAVA_API.Num13_Exception.exceptionhomework;

import java.util.Objects;

/*
 * 1.模拟用户登录案例。接收用户输入的账号、密码,封装login方法用于验证登录。  --数据可自行模拟
 * 如果账号密码均正确,显示登录成功,否则抛出对应异常,并给出提示信息。
 *  * 注:需自定义两个异常UserNameNFException(用户名未找到异常)、PwdNFException(密码未找到异常),分别处理用户名的错误和密码的错误。
 * @author yyc
 * 2021/9/18 17:34
 */

public class User {
    private String id;
    private String password;
    public User() {
    }
    public User(String id, String password) {
        this.id = id;
        this.password = password;
    }
    //如果账号密码均正确,显示登录成功,否则抛出对应异常,并给出提示信息。
    public boolean Login(User[] users) throws PwdNFException, UserNameNFException {
        for (int i = 0; i < users.length;i++){
            if (this.id.equals(users[i].id)){
                if (this.password.equals(users[i].password)){
                    return true;
                }else{
                    throw new PwdNFException("密码错误!");
                }
            }else if (i == users.length-1){
                throw new UserNameNFException("用户不存在");
            }
        }
        return false;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", password='" + password +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id) &&
                Objects.equals(password, user.password);
    }
}
package JAVA_API.Num13_Exception.exceptionhomework;

/**
 * * 定义自定义异常 需要注意以下几点:
 *  * 1.类名定义时要做到见名知意
 *  * 2.需要继承自Exception,直接或间接继承都可以
 *  * 3.提供继承自Exception中提供的所有构造器
 *  *
 *  UserNameNFException 用户名未找到异常
 *  当用户未找到时抛出该异常
 * @author yyc
 * 2021/9/19 15:40
 */
public class UserNameNFException extends Exception{
    public UserNameNFException() {
    }

    public UserNameNFException(String message) {
        super(message);
    }

    public UserNameNFException(String message, Throwable cause) {
        super(message, cause);
    }

    public UserNameNFException(Throwable cause) {
        super(cause);
    }

    public UserNameNFException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

package JAVA_API.Num13_Exception.exceptionhomework;

/**
 * @author yyc
 * 2021/9/19 15:44
 */
public class PwdNFException extends Exception{
    public PwdNFException() {
    }

    public PwdNFException(String message) {
        super(message);
    }

    public PwdNFException(String message, Throwable cause) {
        super(message, cause);
    }

    public PwdNFException(Throwable cause) {
        super(cause);
    }

    public PwdNFException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:26:09  更:2021-09-22 14:28:17 
 
开发: 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年12日历 -2024/12/29 5:21:42-

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