当前位置: 首页>Python>正文

捕獲異常的方法有,Scala系列20:Scala中異常捕獲與拋出異常

捕獲異常的方法有,Scala系列20:Scala中異常捕獲與拋出異常

目錄

0.異常處理

1.捕獲異常

2.拋出異常


0.異常處理

來看看下面一段代碼

  def main(args: Array[String]): Unit = {val i = 10 / 0println("你好!")}Exception in thread "main" java.lang.ArithmeticException: / by zeroat ForDemo$.main(ForDemo.scala:3)at ForDemo.main(ForDemo.scala)

執行程序,可以看到scala拋出了異常,而且沒有打印出來"你好"。說明程序出現錯誤后就終止了。

那怎么解決該問題呢?

在scala中,可以使用異常處理來解決這個問題?

1.捕獲異常

捕獲異常的方法有?語法格式

try {// 代碼
}
catch {case ex:異常類型1 => // 代碼case ex:異常類型2 => // 代碼
}
finally {// 代碼
}

尖叫提示:

  • Scala中捕捉異常的catch子句,語法與其他語言中不太一樣。在Scala里,借用了模式匹配的思想來做異常的匹配,因此,在catch的代碼里,是一系列case字句
  • try中的代碼是我們編寫的業務處理代碼
  • 在catch中表示當出現某個異常時,需要執行的代碼
  • 在finally中,是不管是否出現異常都會執行的代碼

示例說明

  • 使用try..catch來捕獲除零異常

參考代碼

package com.robot.scalademoobject _08ObjectDemo {def main(args: Array[String]): Unit = {try {val i = 10 / 0println("你好!")} catch {//case ex: Exception => println(ex.getMessage)  //   / by zerocase ex:Exception => ex.printStackTrace()  //調用自帶方法打印,case只執行一個。}finally {println("我一定會執行,不管異常上面發生了什么")}}
}
/***java.lang.ArithmeticException: / by zeroat com.robot.scalademo._08ObjectDemo$.main(_08ObjectDemo.scala:7)at com.robot.scalademo._08ObjectDemo.main(_08ObjectDemo.scala)我一定會執行,不管異常上面發生了什么*/

2.拋出異常

我們也可以在一個方法中,拋出異常。語法格式和Java類似,使用throw new Exception...

scalar函數、示例說明

  • 在main方法中拋出一個異常

參考代碼

//scala主動拋出異常
package com.robot.scalademoobject _08ObjectDemo {def main(args: Array[String]): Unit = {throw new Exception("這是一個異常")}
}
/***
Exception in thread "main" java.lang.Exception: 這是一個異常at com.robot.scalademo._08ObjectDemo$.main(_08ObjectDemo.scala:6)at com.robot.scalademo._08ObjectDemo.main(_08ObjectDemo.scala)*///2.Scala捕獲主動拋出的異常
package com.robot.scalademoobject _08ObjectDemo {def main(args: Array[String]): Unit ={try {throw new Exception("這是一個異常")}catch {case ex:Exception => print("哈哈,被我捕獲了")}}
}
/***
哈哈,被我捕獲了*/

尖叫提示:注意在scala不需要在方法上聲明要拋出的異常,它已經解決了再Java中被認為是設計失敗的檢查型異常。

?

https://www.nshth.com/python/338537.html
>

相关文章:

  • 捕獲異常的方法有
  • scalar函數
  • 如何拋出和捕獲異常
  • java異常未捕獲會往上層拋么
  • python異常捕獲
  • 異常是可以捕獲和處理的
  • try catch捕獲異常繼續執行
  • 哪些異常不需要捕獲
  • 國二python難嗎,python字符串(二)
  • 電腦軟件下載app,在電腦上體驗了 16 款手機 App 后,我很失望
  • elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹
  • 數據結構與算法python,[FreeCodeCamp筆記] Python 數據結構和算法1 二分搜索 Binary Search
  • 黑蘋果macOS系統鏡像工具,MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分區原版黑蘋果鏡像
  • 51單片機畢業設計論文,【畢業設計】基于單片機無線充電的4軸飛行器 -物聯網 嵌入式 stm32
  • 數據庫基礎知識整理,數據庫筆記整理
  • python運行不報錯又無任何結果輸出,linux 正確錯誤輸出_報告錯誤的正確方法
  • 計算機組成原理第六版課后答案,杭電計算機組成原理實驗九R-I,杭電計組實驗9-實現R-I型指令的CPU設計實驗.doc
  • python面向對象,Python零基礎速成班-第10講-Python面向對象編程(下),Property屬性、特殊方法、設計模式、鏈表應用
  • 數據庫視圖是什么,【SpringMVC】SpringMVC模型數據+視圖解析器
  • mp3格式轉換器,FFmpeg支持的音頻和視頻編解碼格式
  • 音樂學校招生要求,學校的音樂樓
  • c語言輸入兩個數輸出較大數,C語言求兩個數的較大值
  • 定義一個函數求三個數的最大值,輸入兩個整數,要求輸出其中值較大者。要求用函數求出最大值
  • MySQL學習 DAY1
  • 一個眼神一個微笑就讓人滿足,看得到的微笑
  • centos7安裝MySQL,centos7下載spark連接mysql數據庫提取數據(pyspark,Scala,python獨立執行)
  • node.js開發,從零開始nodejs系列文章-nodejs到底能干什么
  • python控制軟件自動化,Python實現網站自動登錄---傻瓜教程
  • get all of,resent = msg.get_all('Resent-Date') AttributeError: 'str' object h
  • opencv人體動作識別,torchvision使用keypoint rcnn 進行人體關鍵點定位
  • 深度卷積神經網絡原理與實踐,卷積神經網絡resent網絡實踐
  • 服務器,win服務器系統路由器,Windows server 2012 之路由功能
  • 小青蛙走迷宮的問題
  • 漢諾塔-小青蛙
  • 小青蛙oracle跟蹤,在小青蛙TOAD中用oracle語句寫
  • 音頻頻譜分析儀安卓版,[Android]自定義繪制一個簡易的音頻條形圖,附上對MP3音頻波形數據的采集與展現
  • 連乘符號∏的運算法則,∏這個是什么符號?
  • 用例失敗jenkins卻構建成功,jenkins 構建異常_jenkins構建失敗的原因是什么?