一文带你快速全面掌握Java异常

Java异常分类及处理

概念

如果某个方法不能按照正常的途径完成任务,就可以以另一种路径退出该方法。在这种情况下,会抛出一个封装了错误信息的对象。此时这个方法会立刻退出且不返回任何值。另外这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H3xQmpfu-1636508034118)(https://s3.bmp.ovh/imgs/2021/11/b7f6a6431c129ba0.png)]

异常分类

Throwable是Java语言中所有错误或异常类的超类。其下一层子类包括Error和Exception

Error

Error类是指Java运行时系统内部的错误或资源耗尽错误。应用程序不会抛出该类的对象。如果出现了这类错误,除了告知用户,剩下的就是尽力使得程序安全地终止。

Exception

Exception有两个分支,一个是RuntimeException(运行时异常)、一个是CheckedException(必检异常)。

RuntimeException

诸如NullPointerException、ClassCastException等;该异常是那些可能在Java虚拟机上正常运行期间抛出异常的超类。如果出现RuntimeException,那么一定是程序员的错误。

CheckedException

诸如IOException、SQLException等;这种错误一般是外部错误,常常发生在编译阶段,Java虚拟机便会强制程序去捕获此类异常,,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一般包括几个方面:

  • 试图在文件尾部读取数据
  • 试图打开一个错误格式的 URL
  • 试图根据给定的字符串查找 class 对象,而这个字符串表示的类并不存在
Java异常处理方式
  1. 遇到问题不处理,而是继续抛给调用者

    抛出异常通常有三种方式:throw|throws|系统自动抛出异常

    public static void main(String[] args) { 
         String s = "abc"; 
         if(s.equals("abc")) { 
         throw new NumberFormatException(); 
         } else { 
         System.out.println(s); 
         } 
    } 
    int div(int a,int b) throws Exception{
    	return a/b;
    }
    

​ 2. try-catch捕获异常针对性处理方式

throw和throws的区别
  • 位置不同

    throws用在函数上,后面可以跟多个异常类

    throw用在函数内,后面跟异常对象

  • 功能不同

    throws用来声名异常,让调用者可以知道该功能可能出现的问题,可以给出预先的处理方式。throw抛出具体的的异常对象,当执行到throw语句时,该程序功能就已经结束。同时将异常问题抛给其调用者进行处理。也就是说最好不能在throw语句后面增加代码,因为根本无法执行到该段代码。

    throws表示异常出现的一种可能性,但并不一定会出现这些异常,而执行throw则一定抛出了某种异常。

    两者都是消极处理异常的方式只是会抛出或可能抛出异常,但不会由函数去处理异常,而是都会将异常处理抛给其调用者。

如果try-catch块中出现return,finally的执行情况

一定执行,并且finally的执行早于try内的return

  1. 不管是否出现异常,finally代码块中的语句一定会执行。
  2. 当try和catch块中存在return时,finally仍然会执行。
  3. finally是在return后面的表达式运算后执行的(但无论finally块中的语句怎么样,都不会改变返回值,因为该返回值在finally执行前就已经保存好了,实在其执行前确定的。)
  4. finally中最好不要包含return,否则程序会提早推出,返回值将不再会是try或catch中保存的返回值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark是一个快速通用的集群计算框架,它可以处理大规模数据,并且具有高效的内存计算能力。Spark可以用于各种计算任务,包括批处理、流处理、机器学习等。本文将你了解Spark计算框架的基本概念和使用方法。 一、Spark基础概念 1. RDD RDD(Resilient Distributed Datasets)是Spark的基本数据结构,它是一个分布式的、可容错的、不可变的数据集合。RDD可以从Hadoop、本地文件系统等数据源中读取数据,并且可以通过多个转换操作(如map、filter、reduce等)进行处理。RDD也可以被持久化到内存中,以便下次使用。 2. Spark应用程序 Spark应用程序是由一个驱动程序和多个执行程序组成的分布式计算应用程序。驱动程序是应用程序的主要入口点,它通常位于用户的本地计算机上,驱动程序负责将应用程序分发到执行程序上并收集结果。执行程序是运行在集群节点上的计算单元,它们负责执行驱动程序分配给它们的任务。 3. Spark集群管理器 Spark集群管理器负责管理Spark应用程序在集群中的运行。Spark支持多种集群管理器,包括Standalone、YARN、Mesos等。 二、Spark计算框架使用方法 1. 安装Spark 首先需要安装Spark,可以从Spark官网下载并解压缩Spark安装包。 2. 编写Spark应用程序 编写Spark应用程序通常需要使用Java、Scala或Python编程语言。以下是一个简单的Java代码示例,用于统计文本文件中单词的出现次数: ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import java.util.Arrays; import java.util.Map; public class WordCount { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("input.txt"); JavaRDD<String> words = lines.flatMap(line -> Arrays.asList(line.split(" ")).iterator()); Map<String, Long> wordCounts = words.countByValue(); for (Map.Entry<String, Long> entry : wordCounts.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } sc.stop(); } } ``` 3. 运行Spark应用程序 将编写好的Spark应用程序打包成jar包,并通过以下命令运行: ```bash spark-submit --class WordCount /path/to/wordcount.jar input.txt ``` 其中,--class参数指定应用程序的主类,后面跟上打包好的jar包路径,input.txt是输入文件的路径。 4. 查看运行结果 Spark应用程序运行完毕后,可以查看应用程序的输出结果,例如上述示例中的单词出现次数。 以上就是Spark计算框架的基本概念和使用方法。通过学习Spark,我们可以更好地处理大规模数据,并且提高计算效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值