zoukankan      html  css  js  c++  java
  • 第八周课程总结&实验报告(六)

    课程总结
    一、Java异常的捕获与处理:

    1.Java异常简介:
    Java异常是Java提供的一种识别及响应错误的一致性机制。
    Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。
    Java异常机制用到的几个关键字:try、catch、finally、throw、throws。

    2.关键字作用概述:
    try -- 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
    catch -- 用于捕获异常。catch用来捕获try语句块中发生的异常。
    finally -- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
    throw -- 用于抛出异常。
    throws -- 用在方法签名中,用于声明该方法可能抛出的异常。

    3.异常处理格式:
    try{

    //有可能出现异常的语句
    }[catch(异常类型1 异常的变量名1){

    //编写处理异常的语句
    }catch(异常类型2 异常的变量名2){

    //编写处理异常的语句
    }...]
    [finally{

    //一定会运行的代码;
    }]

    二、多线程:
    1.进程(process):
    是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

    2.线程(thread):
    有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。

    实验报告

    (1)编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。

    源代码1:
    package shiyan6;
    import java.util.Scanner;
    public class Shuzuyichang {
    public static void main(String[] args){
    System.out.println("程序开始运行");
    int[] i=new int[3];
    @SuppressWarnings("resource")
    Scanner k=new Scanner(System.in);
    int j=k.nextInt();
    try {
    int a=i[j];
    a=a+1;
    }catch (ArrayIndexOutOfBoundsException aiobe){
    System.err.println("数组越界异常:"+aiobe);
    }
    finally {
    System.out.println("这个程序有运行过了.......");
    }
    }
    }

    运行截图:

    (2)自定义异常类的使用

    车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

    技术方案:

    编写一个Exgeption的子类DangerException,该子类可以创建异常对象,该异常对象调用toShow()方法输出“危险物品”。编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时(goods的isDanger属性是true)将抛出DangerException异常。
    程序在主类的main()方法中的try-catch语句的try部分让Machine类的实例调用checkBag(Goods goods)的方法,如果发现危险品就在try-catch语句的catch部分处理危险品。

    源代码:
    package shiyan6;

    @SuppressWarnings("serial")
    public class DangerException extends Exception{
    String weixianpin;
    public DangerException(){
    this.weixianpin="weixianpin";
    }

    public void toShow(){
        System.err.println("警告!!!");
    }
    

    }

    package shiyan6;

    public class Goods {
    private String name;
    boolean isDanger=true;
    public Goods(String name){
    this.name=name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }

    }

    package shiyan6;

    public class Machine {

    public void checkBag(Goods goods) throws DangerException{
       if(goods.isDanger){
           DangerException de=new DangerException();
           throw de;
       }
       else {
           System.out.println(goods.getName()+"不是危险物品!");
       }
    

    }
    }

    package shiyan6;

    import java.util.Scanner;
    import java.util.ArrayList;
    public class Test {
    public static void main(String[] args) {
    ArrayList list=new ArrayList();{{
    list.add("管制刀具");
    list.add("汽油");
    list.add("枪");
    list.add("易爆物品");
    list.add("易燃物品");
    }};
    System.out.println("您的物品需要检测方予通过");
    @SuppressWarnings("resource")
    Scanner n=new Scanner(System.in);
    String wupin=n.next();
    Goods goods=new Goods(wupin);
    Machine m=new Machine();
    System.out.println("物品检测中......");
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    }
    try {
    m.checkBag(goods);
    } catch (DangerException ae) {
    if(list.contains(wupin)) {
    ae.toShow();
    System.err.println(goods.getName() + "-->>属危险物品不予通过");
    }
    else{
    System.out.println(goods.getName() + ":检查通过");
    }
    }
    }
    }

    运行截图:



  • 相关阅读:
    109 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 05 问题解析--通过一个方法完成学生和专业的双向关联
    108 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 04 问题解析--数组未实例化造成的空指针异常
    107 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 03 编写方法完成学生个数统计功能
    106 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 02 新增属性完成学生信息存储
    105 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 01 新增需求及分析
    session与cookie的区别和联系
    session和cookie的区别
    Web服务器主动推送技术
    webSocket的场景应用
    TCP、Http和Socket 优劣比较
  • 原文地址:https://www.cnblogs.com/freezinng/p/11701199.html
Copyright © 2011-2022 走看看