Java有关异常处理的小程序

1.Aboutexception程序

代码:

import javax.swing.*;

class AboutException {

   public static void main(String[] a)

   {

     int i=1, j=0, k;     //infinity正无穷

    // k=i/j;

try //监控

{

k = i/j;    // Causes division-by-zero exception

//throw new Exception("Hello.Exception!");

}

catch ( ArithmeticException e)

{

System.out.println("被0除.  "+ e.getMessage());

}

catch (Exception e)

{

if (e instanceof ArithmeticException)

System.out.println("被0除");

else

{  

System.out.println(e.getMessage());

}

}

finally               

     {

      JOptionPane.showConfirmDialog(null,"OK");

     } 

  }

}

运行结果:

修改后(删除出现错误的语句)

Finally必定运行。

2.若将1中int类型改为double,输出结果为infinity而非异常,因为javac在编译时将int语句生成为idiv字节码指令,而double则生成ddiv字节码指令,JVM在具体实现这两个指令时,采用了不同的处理策略,导致两段代码运行时得到不同的结果。

3.阅读代码catchwho.Java,写出运行结果

public class CatchWho {
    public static void main(String[] args) {
        try {
                try {
                    throw new ArrayIndexOutOfBoundsException();
                }
                catch(ArrayIndexOutOfBoundsException e) {
                       System.out.println(  "ArrayIndexOutOfBoundsException" +  "/内层try-catch");
                }

            throw new ArithmeticException();
        }
        catch(ArithmeticException e) {
            System.out.println("发生ArithmeticException");
        }
        catch(ArrayIndexOutOfBoundsException e) {
           System.out.println(  "ArrayIndexOutOfBoundsException" + "/外层try-catch");
        }
    }
}

运行结果:

4.运行catchwho2并写出结果:

public class CatchWho2 {
    public static void main(String[] args) {
        try {
                try {
                    throw new ArrayIndexOutOfBoundsException();
                }
                catch(ArithmeticException e) {
                    System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch");
                }
            throw new ArithmeticException();
        }
        catch(ArithmeticException e) {
            System.out.println("发生ArithmeticException");
        } //不允许累积错误
        catch(ArrayIndexOutOfBoundsException e) {
            System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");
        }
    }
}

运行结果:

5.EmbedFinally.java

代码:

public class EmbededFinally {

public static void main(String args[]) {        

int result;        

try {            

System.out.println("in Level 1");           

  try {               

System.out.println("in Level 2");

                   // result=100/0;  //Level 2

  try {                 

  System.out.println("in Level 3");                     

  result=100/0;  //Level 3                

}                 

catch (Exception e) {                    

System.out.println("Level 3:" + e.getClass().toString());                

}

finally {

System.out.println("In Level 3 finally");

}               

// result=100/0;  //Level 2           

}

catch (Exception e) {

  System.out.println("Level 2:" + e.getClass().toString());

  }

  finally {

System.out.println("In Level 2 finally");

 }

// result = 100 / 0;  //level 1

}

catch (Exception e) {

System.out.println("Level 1:" + e.getClass().toString());        

}

finally {             

System.out.println("In Level 1 finally");

}  

}

}

运行截图:

Finally方法必定运行。

总结:当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

6.通过SystemExitAndFinally.java示例程序验证finally语句块是否一定会执行。

代码:

public class SystemExitAndFinally {

public static void main(String[] args)

    {       

try{          

System.out.println("in main");           

throw new Exception("Exception is thrown in main");

             //System.exit(0);

}

catch(Exception e)

        {           

System.out.println(e.getMessage());           

System.exit(0);        

}

finally        

{

System.out.println("in finally");

}    

}

}

运行结果截图:

由此,finally语句块一定会执行。

7.编写一个程序,此程序在运行时要求用户输入一个整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

代码;

package boke1125;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.Scanner;

public class Grade {

public static void main(String[] args)  {

while(true){

//判断整数//判断成绩等级

 try {

 BufferedReader buf = new BufferedReader(

                new InputStreamReader(System.in));   

             //抛出受控的异常

        System.out.println("请输入考试成绩:(正整数)");   

            int grade = Integer.parseInt(buf.readLine());

                   //有可能引发运行时异常

            System.out.println("成绩为:  "+grade);

   if(grade<0||grade>100){

 MyException1 e1=new MyException1("成绩应在0~100之间!");

   throw e1;

   }

   if(grade>=0&&grade<60){

   System.out.println("你处于不及格水平");

   break;

   }

   else if(grade>=60&&grade<70){

   System.out.println("你处于及格水平");

   break;

   }

   else if(grade>=70&&grade<80){

   System.out.println("你处于中等水平");

   break;

   }

   else if(grade>=80&&grade<90){

   System.out.println("你处于良好水平");

   break;

   }

   else if(grade>=90&&grade<=100){

   System.out.println("你处于优秀水平");

   break;

   }

 }

        //以下异常处理语句块是必须的,否则无法通过编译

 catch(MyException1 e1) {

            System.out.println(e1);

        }   

 catch(IOException e) {

            System.out.println("I/O错误");

        }

  //以下异常处理语句块可以省略,不影响编译,但在运行时出错

        catch(NumberFormatException e) {

            System.out.println("成绩必须为整数");

        }

}

}

}

class MyException1 extends Exception{          

public MyException1(String str){

super(str);

}

}

运行结果截图:

时间: 2024-10-23 00:31:24

Java有关异常处理的小程序的相关文章

java版的QQ小程序

转载自:http://blog.csdn.net/lihongxun945/article/details/6114290 这是一个简单的java版的QQ小程序. 包括一个简单的服务器和一个简单的客户端. 运行时,先运行服务器,然后在运行客户端,就可以进行聊天了. 默认的配置是localhost,端口4545,更改ip就可以在两天电脑上进行聊天了. 目前不支持内网和外网之间的访问,也不支持多人聊天. 因为这只是一个简单的例子,感兴趣的同学可以通过改进,实现多人聊天和内外网之间的访问. 效果图:

Java Static关键字之小程序

对于学习static我们先来看两个例子: 1 public class Cat { 2 private static int sid = 0; 3 private String name; 4 int id; 5 Cat(String name) { 6 this.name = name; 7 id = sid++; 8 } 9 public void info(){ 10 System.out.println 11 ("My name is "+name+" No.&quo

java 学习 ——文本编辑框小程序

简易的文本编辑框小程序: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class TextEditorFrame extends JFrame{ File file=null; Color color=Color.red; TextEditorFrame(){ initTextPane(); initAboutDialog(); initToolBar(); initMen

「小程序JAVA实战」微信小程序工程结构了解(五)

转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-05/ 微信小程序工程结构 audio,button,canvas,checkbox 都是由4个文件构成,而且他们的目录名称和文件内部的名称「保持一致」,这点特别重要. 主目录结构 app.js 外部的全局的js,可以当作一个父类,把这个全局文件理解成java里面的一个类,这样理解对于java开发的容易理解些. app.json 全局的配置文件,有点类似java web开发的resource目录下

JAVA的第一个小程序:Hello world

1.新建记事本文件helloworld.java 2.在记事本输入下面代码: class Demo{ public static void main(String[] args) { System.out.println("hello java"); } } 3.在cmd进入记事本文件的文件夹目录下 4.命令:javac helloworld.java  ------>   文件夹会出现类文件Demo.class 5.命令:java Demo  ------->就可以运行该

java的第一个小程序

1.2.2编写的第一个JAVA public class Hellow World{ //程序框架 public static void main (String [] args){ //main 方法框架 System.out.println("Hello World!"); //编写的代码输出语句 } } 注释的简单介绍: 单行注释 // 多行注释/* */

Java仿短视频小程序全栈开发实战视频教程+课程代码

第1章 微信小程序初学入门第2章 微信小程序的基础组件学习第3章 form表单组件与小程序前后端通信第4章 产品介绍与数据库规划介绍第5章 开发用户登录注册与用户信息第6章 上传视频业务流程开发第7章 视频展现页开发第8章 开发视频的留言板第9章 开发短视频后台办理体系第10章 项目上线与发布 下载地址:百度网盘 原文地址:http://blog.51cto.com/13870071/2142671

Java Servlet:服务器小程序

servlet:服务器小程序 servlet是一个接口,接口是一种规范,因此servlet是一种规范 一个类声明为抽象类的原因: 不包含抽象方法,不想被实例化 包含抽象方法,子类有对抽象方法的不同实现 什么是Servlet容器? Servlet容器,顾名思义里面存放着Servlet对象.我们为什么能通过Web服务器映射的URL访问资源?肯定需要写程序处理请求,主要3个过程: 接收请求:web服务器 处理请求: servlet 响应请求:web服务器 servlet容器: tomcat Jetty

java实现屏幕共享的小程序

      最近在做软件软件工程的课程设计,做一个用于实验室的屏幕监控系统,参考各种前人代码,最后领悟之后要转换自己的代码,初学者都是这样模仿过来的.       说到屏幕监控系统,有教师断和学生端,教师端就是Server端,学生端就做Client端.系统里比较有趣的一个地方应该算是屏幕广播与屏幕监控吧,其余什么点名签到,锁屏,定时关机的,就相对来说简单点.       屏幕广播,在功能实现上面,说白了,就是教师端的机器不断截取屏幕信息,以图片的形式发送到每一个学生端的电脑上面,由此学生能够看见