首页 > 其他分享 >2023/7/07

2023/7/07

时间:2023-07-06 17:13:49浏览次数:31  
标签:07 int System 2023 println 异常 public out

今天主要学习了Java的异常处理

首先,一个程序如果碰到了异常不处理,程序就会立即停止,而异常处理就是在异常发生的情况下启动类似于备用方案使程序继续运行

Java中的异常捕获结构由try,catch,finally三部分构成,其中,try和catch是必须同时存在的。

try中的代码就是可能存在异常的代码,catch中的代码就是try中有异常时的执行方案,finally中的代码无论有没有异常都会正常运行

package 异常处理;

public class Take {
    public static void main(String[] args)
    {
        try {
            String str="hahahaha";
            System.out.println(str+"个锤子");
            int num=Integer.parseInt("23H");//将数字的字符型转换为整数型
            System.out.println(num);
        }catch(Exception e)//如果出现异常就替换异常语句然后执行,一般都填入处理异常的代码
        {
            e.printStackTrace();//输出异常性质
            System.out.println("这里显示异常错误");
        }
        finally//无论是否异常,里面的内容都会执行 
        {
            System.out.println("666");
        }
    }
}
package 异常处理;
import java.util.Scanner;
public class computer {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        try//输入的不为整数就抛出
        {
            System.out.println("请选择你要进行的运算:\n1.加\n2.减\n3.乘\n4.除");
            int x=sc.nextInt();
            System.out.println("请两个输入整数:");
            int a=sc.nextInt();
            int b=sc.nextInt();
            switch (x)
            {
            case 1: add(a,b);
            break;
            case 2: minus(a,b);
            break;
            case 3: plus(a,b);
            break;
            case 4: chu(a,b);
            }
        }catch(Exception e)
        {
            System.out.println("数据错误,请输入整数!");
            e.printStackTrace();
        }
        finally
        {
            System.out.println("结束");
        }
    }
    public static void add(int a,int b)
    {
        System.out.println(a+b);
    }
    public static void minus(int a,int b)
    {
        System.out.println(a-b);
    }
    public static void plus(int a,int b)
    {
        System.out.println(a*b);
    }
    public static void chu(int a,int b)
    {
        try//除数为0就抛出错误,直接在方法处处理了该异常
        {
        System.out.println(a/b);
        }catch(Exception e)
        {
            System.out.println("请输入正确的除数");
            e.printStackTrace();
        }
        finally
        {
            
        }
    }
}
package 异常处理;
import java.util.Scanner;
public class bank {
    static double money=1023.79;
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要取款的金额:");
        try
        {
            int a=sc.nextInt();
            if(a<money)
            {
                System.out.println("取款成功");
                money-=a;
            }
        }
        catch(Exception e)
        {
            System.out.println("请输入一个整数");
        }
        finally
        {
            System.out.println("您账户的余额还有:"+money);
        }
        
    }
}

Java中存在自定义异常,当运行时的代码不符合你所自定义的条件时就会抛出该异常,在方法中的异常抛出如果不想在当前方法中解决,就必须抛出该异常,一个方法运行时只能抛出一个异常,当该方法抛出异常后,该方法就不会再往下执行,要让方法抛出异常就要用到throws和throw关键字,前者是在方法的定义后主体前,throws指出了该方法所能抛出的异常,throw是在方法主体内来运用的。

package 自定义异常;
class ClassException extends Exception//自定义异常
{
    public ClassException(String hhh)
    {
        super(hhh);
    }
}
public class students {
    public static void main(String[]args)
    {
        try
        {
            qiandao("张三","未到");
        }
        catch(ClassException a)//处理指定类型的异常
        {
            a.printStackTrace();
            System.out.println(a);
        }
    }
    static void qiandao(String name,String state)throws ClassException//抛出的异常类型,抛出的异常在主方法中处理
    {
        if(state.equals("未到") )
        {
            throw new ClassException(name+"旷课");
        }
    }
}
package 自定义异常;

public class key {
    public static void main(String[] args)
    {
        try {
            car();
        }
        catch(NullPointerException a)
        {
            a.printStackTrace();
            System.out.println("该异常为空指针异常");
        }
    }
    public static void car()throws NullPointerException//要抛出该异常必须用throws指明抛出
    {
        int[] a=null;
        a[1]='a';
    }
}
package 自定义异常;
import java.util.Scanner;
class numException extends Exception
{
    public numException (String a)
    {
        super(a);
    }
}
public class supermarket {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要购买的数量:");
        int a=sc.nextInt();
        try
        {
            sum(a);
        }
        catch(numException e)
        {
            System.out.println(e);
        }
        finally
        {
            System.out.println("祝您购物愉快");
        }
    }
    static void sum(int x)throws numException
    {
        if(x>1500)
            throw new numException("超过限制");//按throws后面的规定类型抛出
        else
            System.out.println(x/500.0*3.98);
    }
}
package 自定义异常;
class priceException extends Exception
{
    priceException(String a)
    {
        super(a);
    }
}
public class tomato {
    public static void main(String[] args)
    {
        int price=8;
        try
        {
            now(price);
        }
        catch(priceException e)
        {
            System.out.println(e);
        }
    }
    public static void now(int price)throws priceException
    {
        if(price>7)
            throw new priceException("价格超标");
    }
}

能被try-catch捕捉的异常都是运行时异常,Java的类库中有很多常见的异常类

标签:07,int,System,2023,println,异常,public,out
From: https://www.cnblogs.com/zhenaifen/p/17532706.html

相关文章

  • CVE-2023-34843
    漏洞名称TraggoServer文件读取(CVE-2023-34843)利用条件traggo/server版本0.3.0漏洞原理TraggoServer是一个基于标签的时间跟踪工具。CVE-2023-34843中,攻击者可构造恶意请求读取遍历系统上的文件,造成敏感信息泄漏。漏洞利用poc/static/..%5c..%5c..%5c..%5cetc/pas......
  • 2023年7月6日 天气:晴
       今天早上起来背了10个单词,然后出去打了两个小时的羽毛球,然后看了一小时的电视剧,再就是练了一个小时的字,然后学习了一个小时的java,最后看了一会儿构建之法,编程了一个小时的C语言。  明天打算早上起来看一小时的英语课本,然后出去玩一个小时,再看一小时的java课本,然后练......
  • 「NOIP 模拟赛 20230706」偷 WiFi
    summarization有一个长度为\(n\)的序列\(p\),将其中若干个数标记。对于序列中的每一个位置\(i\),其贡献为其左边与右边离它最近的被标记的数的数值的和。求出最大的贡献总和。(\(1\len\le2\times10^6\))solution首先显然,\(p_1,p_n\)一定要标记。然后考虑分别求相邻的标记数......
  • 第三届计算机应用与信息安全国际会议(ICCAIS2023)
    由湖北省众科地质与环境技术服务中心主办的2023第三届计算机应用与信息安全国际会议(ICCAIS2023)将于2023年12月20-22日在中国武汉召开。 ICCAIS2023力图建立 一个国际化的计算机应用与信息安全领域的学术交流平台,分享最新进展和研究成果。期待您的参与。 ★重要信息大会时间:20......
  • 2023-07-06 uview-ui组件u-checkbox设置label-disabled无效==》点击文本仍旧触发check
    解决方案:既然无效,那就给checkbox包裹的文本绑定一个点击事件,该点击事件使用.stop来阻止事件冒泡,这样点击文本就不会触发checkbox的change了,可以参考一下代码:<u-checkbox><[email protected]="stopBack"></View></u-checkbox>关键点:@click.stop注:改问题出自uview-ui1.......
  • C/C++学生成绩管理系统[2023-07-06]
    C/C++学生成绩管理系统[2023-07-06]学生成绩管理系统开发一个可以管理学生成绩以及学生基本信息的一个信息系统,至少实现如下功能:信息管理,支持信息的增、删、改、查操作,具体信息类型如下:(1) 管理学生信息 ,包括学号,姓名,年龄,班级等等信息。(2) 班级信息,包括班级编号、班级人数,......
  • C++电影评分系统[2023-07-06]
    C++电影评分系统[2023-07-06]程序设计综合课程设计指导书一、题目:电影评分系统二、设计内容及要求:根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能。本系统要求模拟实现电影评分系统,其中包括电影资源管......
  • 【2023-07-05】打算旅游
    20:00时间以同样的方式流经每个人,而每个人却以不同的方式度过时间。                                                 ——川端康成昨晚邻居从海南旅游回来,带了本地的......
  • C++程序课程设计任务书[2023-07-06]
    C++程序课程设计任务书[2023-07-06]C++程序课程设计任务书班级学号姓名一、实践目的该实践在系统学习《C++程序设计基础》课程后进行。通过本实践,培养学生使用C++解决实际问题的能力。二、实践任务与要求(任选一个任务,独立完成)任务一:(一)......
  • 初识html[230706]
    基础认知目标:认识网页组成、浏览器、web标准概念铺垫网页有哪些部分组成?文字图片视频音频超链接背后本质是什么?前端程序员、工程师的代码代码是通过什么软件转换成用户眼中的页面?通过浏览器“解析和渲染”常见:IE、Firefox、Chorme(辅助、自带调试功能多)、Saf......