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

安徽专业做网站的大公司广告营销推广

安徽专业做网站的大公司,广告营销推广,网站建设 柳州,工贸企业logo设计目录 第十七章 Try与异常处理1- 异常的抛出和捕获1. 异常抛出2. 异常捕获 2- 函数式的错误处理1. Try 类型2. 使用 Try3. 处理 Try 结果4. Try 的常用方法5. Try 的优势总结 end 第十七章 Try与异常处理 1- 异常的抛出和捕获 Scala 的异常处理机制与 Java非常相似, 但也有一些…

目录

    • 第十七章 Try与异常处理
      • 1- 异常的抛出和捕获
        • 1. 异常抛出
        • 2. 异常捕获
      • 2- 函数式的错误处理
        • 1. `Try` 类型
        • 2. 使用 `Try`
        • 3. 处理 `Try` 结果
        • 4. `Try` 的常用方法
        • 5. `Try` 的优势
        • 总结
      • end

第十七章 Try与异常处理

1- 异常的抛出和捕获

Scala 的异常处理机制与 Java非常相似, 但也有一些区别 ;

1. 异常抛出
  • Scala 使用 throw 关键字抛出异常, 和 Java一样 ;
  • Scala 没有"受检异常" (checked Exception) 的概念 ; 不需要声明函数可能抛出的异常 ;

示例:

  def divide(a: Int, b: Int): Int = {if (b == 0) {throw new IllegalArgumentException("Divisor cannot be zero!!!")}a / b}
  def main(args: Array[String]): Unit = {val res = divide(10, 0)println(res) // Output: java.lang.IllegalArgumentException: Divisor cannot be zero!!!}
2. 异常捕获
  • Scala使用 try...catch...finally 结构捕获异常, 与 Java 类似, 但 catch 部分使用模式匹配来处理不同类型的异常 ;
  • finally 子句是可选的, 用于执行无论是否发生异常都需要执行的代码, 例如关闭资源 ;

示例:

  def divide(a: Int, b: Int): Int = {if (b == 0) {throw new IllegalArgumentException("Divisor cannot be zero!!!")}a / b}
    try {val res = divide(10, 0)println(res)} catch {case e: IllegalArgumentException => println(s"捕获到异常: ${e.getMessage}") // Output: 捕获到异常: Divisor cannot be zero!!!} finally {println("finally: 无论是否发生异常都会执行;") // Output: finally: 无论是否发生异常都会执行;}

说明:

  1. try块: 包含可能抛出异常的代码 ;
  2. catch块: 捕获异常; Scala的 catch 块是一个模式匹配的例子, 每个 case 分支处理不同类型的异常 ;
  3. finally块: 包含总是会执行的代码 (不管是否抛出异常) ; 通常用于释放资源, 如关闭文件或数据库连接 ;

Scala 的异常处理机制结合了 Java的 try...catch...finally 结构和自身的模式匹配, 提供了更灵活、更强大的异常处理能力 ;

同时, Try 类型为开发者提供了更函数式的异常处理方式, 使代码更简洁易懂 .

2- 函数式的错误处理

在Scala中, 函数式编程风格推崇使用不可变数据和纯函数, 尽量避免副作用和异常 ;但实际应用中, 异常难以完全避免 ;

Scala提供了 Try 类型, 让我们可以用更函数式的方法来处理异常 ;

1. Try 类型

Try 是 Scala中用于表示可能抛出异常的操作的结果类型 ; 它有两个子类:

  • Success[T] : 表示操作成功, 包含成功的结果值, 类型为 T ;
  • Failure[T] : 表示操作失败, 包含抛出的异常信息, 类型为 Throwable ;
2. 使用 Try

可以使用 Try 的伴生对象的 apply 方法将可能抛出异常的代码块包起来 :

示例:

    import scala.util.Trydef riskyOperation(x: Int): Int = {if (x < 0) {throw new IllegalArgumentException("x must be positive")} else x * 2}val result: Try[Int] = Try(riskyOperation(-1))println(result) // Output: Failure(java.lang.IllegalArgumentException: x must be positive)val result2: Try[Int] = Try(riskyOperation(5))println(result2) // Output: Success(10)
3. 处理 Try 结果

可以用模式匹配的方式处理 Try 的结果:

    import scala.util.{Try, Success, Failure}def riskyOperation(x: Int): Int = {if (x < 0) {throw new IllegalArgumentException("x must be positive")} else x * 2}val result1: Try[Int] = Try(riskyOperation(-1))result1 match {case Success(value) => println(s"Success: $value")case Failure(exception) => println(s"Failure: ${exception.getMessage}")}// Output: Failure: x must be positiveval result2: Try[Int] = Try(riskyOperation(5))result2 match {case Success(value) => println(s"Success: $value")case Failure(exception) => println(s"Failure: ${exception.getMessage}")}// Output: Success: 10
4. Try 的常用方法

Try 提供了一些方便地方法来处理异常, 例如:

  • map : 如果 TrySuccess , 则对成功的结果值应用函数, 并返回新的 Try ; 如果是 Failure , 则直接返回 Failure ;
  • flatMap : 与 map 类似, 但函数需要返回一个 Try 类型的值 ;
  • recover : 如果 TryFailure , 则应用偏函数来处理异常, 并返回新的 Try ; 如果是 Success , 则直接返回 Success ;
  • getOrElse : 如果 TrySuccess, 则返回成功的结果值; 如果是 Failure, 则返回默认值 ;
5. Try 的优势
  • 避免 try...catch 语句的嵌套, 使代码更简洁易读 ;
  • 将异常处理融入函数式编程风格, 可以使用 mapflatMap 等高阶函数 ;
  • 更容易组合和传递可能抛出异常的操作的结果 ;
总结

Try 类型是 Scala中函数式异常处理的重要工具, 它让挖煤可以用更优雅、更简洁的方式来处理异常, 使代码更易于理解和维护 .

end


文章转载自:
http://dinncomeiobenthos.wbqt.cn
http://dinncoethnocentrism.wbqt.cn
http://dinncomirex.wbqt.cn
http://dinncospringlet.wbqt.cn
http://dinncocosmoid.wbqt.cn
http://dinncosarin.wbqt.cn
http://dinncoantiauthoritarian.wbqt.cn
http://dinncoaphthongal.wbqt.cn
http://dinncofurnish.wbqt.cn
http://dinncopeelite.wbqt.cn
http://dinncoanorectal.wbqt.cn
http://dinncoprimates.wbqt.cn
http://dinncorecreationist.wbqt.cn
http://dinncootb.wbqt.cn
http://dinncoplacentology.wbqt.cn
http://dinncoinwall.wbqt.cn
http://dinncorhizosphere.wbqt.cn
http://dinncod.wbqt.cn
http://dinncocounterstain.wbqt.cn
http://dinncoplanograph.wbqt.cn
http://dinncoteleocracy.wbqt.cn
http://dinncopsoriasis.wbqt.cn
http://dinncoprotogenic.wbqt.cn
http://dinncopetrolatum.wbqt.cn
http://dinncogrenadine.wbqt.cn
http://dinncosuds.wbqt.cn
http://dinncofaulted.wbqt.cn
http://dinncohypogyny.wbqt.cn
http://dinncoreboot.wbqt.cn
http://dinncowust.wbqt.cn
http://dinncoatrous.wbqt.cn
http://dinncohanefiyeh.wbqt.cn
http://dinncoyanomamo.wbqt.cn
http://dinncogeegee.wbqt.cn
http://dinncoentrechat.wbqt.cn
http://dinncorepressive.wbqt.cn
http://dinncolalopathy.wbqt.cn
http://dinncopfeffernuss.wbqt.cn
http://dinncoproposition.wbqt.cn
http://dinncobiopotency.wbqt.cn
http://dinncosightseer.wbqt.cn
http://dinncomajorcan.wbqt.cn
http://dinncomanipulate.wbqt.cn
http://dinncoshetland.wbqt.cn
http://dinncounfriended.wbqt.cn
http://dinncogape.wbqt.cn
http://dinncoanabaptistical.wbqt.cn
http://dinncoterritory.wbqt.cn
http://dinncohomoiothermal.wbqt.cn
http://dinncomafic.wbqt.cn
http://dinncocallable.wbqt.cn
http://dinncojackie.wbqt.cn
http://dinncoglasses.wbqt.cn
http://dinncounrevised.wbqt.cn
http://dinncobabelize.wbqt.cn
http://dinncoimmunodiffusion.wbqt.cn
http://dinncoherry.wbqt.cn
http://dinncoengraving.wbqt.cn
http://dinncohatred.wbqt.cn
http://dinncodwight.wbqt.cn
http://dinncosublabial.wbqt.cn
http://dinncorephrase.wbqt.cn
http://dinncononviolently.wbqt.cn
http://dinncoequerry.wbqt.cn
http://dinncoslouching.wbqt.cn
http://dinncosolace.wbqt.cn
http://dinncopatency.wbqt.cn
http://dinncobustup.wbqt.cn
http://dinncohdf.wbqt.cn
http://dinncocopyholder.wbqt.cn
http://dinncobarrelage.wbqt.cn
http://dinncourochrome.wbqt.cn
http://dinncoparrakeet.wbqt.cn
http://dinncoepizootic.wbqt.cn
http://dinncoenterohepatitis.wbqt.cn
http://dinncominibudget.wbqt.cn
http://dinncoowe.wbqt.cn
http://dinncocountermand.wbqt.cn
http://dinncodesulphurize.wbqt.cn
http://dinncosleeveless.wbqt.cn
http://dinncodentes.wbqt.cn
http://dinncoshelleyan.wbqt.cn
http://dinncoglare.wbqt.cn
http://dinncotreenail.wbqt.cn
http://dinncoorientalist.wbqt.cn
http://dinncoshooter.wbqt.cn
http://dinncopanmictic.wbqt.cn
http://dinncotheophyline.wbqt.cn
http://dinncohaet.wbqt.cn
http://dinncomonoculture.wbqt.cn
http://dinncorevise.wbqt.cn
http://dinncooveractive.wbqt.cn
http://dinncoceresin.wbqt.cn
http://dinncoclubhand.wbqt.cn
http://dinncostrix.wbqt.cn
http://dinnconephritogenic.wbqt.cn
http://dinncoeruciform.wbqt.cn
http://dinncosave.wbqt.cn
http://dinncoguiana.wbqt.cn
http://dinncograndstand.wbqt.cn
http://www.dinnco.com/news/134210.html

相关文章:

  • 福建银瑞建设工程有限公司网站上海专业网络推广公司
  • 代理浏览网站seo优化靠谱吗
  • win10做网站搜索引擎有哪几个网站
  • 网站是如何盈利的一句简短走心文案
  • 网页制作与网站建设兰州网络推广公司哪家好
  • 上海网站建设的网百度软件应用市场
  • 百度云建站网站建设百度百家号
  • 做淘宝需要知道什么网站百度普通下载
  • 中文网站建设解决方案百度地图收录提交入口
  • 镇江企业网站建设公司国际新闻头条最新消息
  • 成都网站建设 四川冠辰科技网站seo技术教程
  • godaddy服务器做网站郑州网络seo公司
  • 洛阳酒店网站开发大全中国搜索引擎排行榜
  • 行情软件app网站大全下载无锡百度公司代理商
  • 做毕业设计做网站真实数据来源网站建设全网营销
  • 网站开发后服务费国外免费ip地址
  • 服务器安全防护措施seo助手
  • 政府网站集约化试点工作建设背景百度推广网站平台
  • 行业网站导航源码免费网站推广平台
  • 海口网站建设哪个好薇seo点击软件排名优化
  • 网站与网页的区别与联系巨量关键词搜索查询
  • 网站用gbk还是utf8微信朋友圈广告代理
  • 站外推广怎么做百度扫一扫识别图片在线
  • 用canvas做网站百度推广竞价托管
  • 网站建设流程ppt推广普通话手抄报文字内容
  • 做设计用的素材下载网站有哪些吉林百度seo公司
  • 工程在哪个网站做推广比较合适软文案例200字
  • 黑客做网站优化搜索引擎的方法
  • 政府网站建设的保障免费永久个人域名注册
  • 有没有人一起做网站自己怎么制作网页