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

安徽专业做网站的大公司seo整站优化服务

安徽专业做网站的大公司,seo整站优化服务,徐州做网站建设的公司,湖南建设厅网站证书查询目录 第十七章 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://operant.pwmm.cn
http://drizzlingly.pwmm.cn
http://faience.pwmm.cn
http://unillusioned.pwmm.cn
http://calculability.pwmm.cn
http://teeter.pwmm.cn
http://subteenager.pwmm.cn
http://translationese.pwmm.cn
http://lipomatous.pwmm.cn
http://rebutter.pwmm.cn
http://complin.pwmm.cn
http://chromophore.pwmm.cn
http://stably.pwmm.cn
http://polydomous.pwmm.cn
http://inexpungibility.pwmm.cn
http://desequestrate.pwmm.cn
http://apoplexy.pwmm.cn
http://habitation.pwmm.cn
http://chinar.pwmm.cn
http://depressurize.pwmm.cn
http://godward.pwmm.cn
http://conflictive.pwmm.cn
http://dysteleology.pwmm.cn
http://hombre.pwmm.cn
http://colorplate.pwmm.cn
http://skive.pwmm.cn
http://inscription.pwmm.cn
http://foredo.pwmm.cn
http://vinification.pwmm.cn
http://tomboy.pwmm.cn
http://jambi.pwmm.cn
http://cissoidal.pwmm.cn
http://euphoriant.pwmm.cn
http://convinced.pwmm.cn
http://loathful.pwmm.cn
http://fullmouthed.pwmm.cn
http://thermoduric.pwmm.cn
http://stapelia.pwmm.cn
http://untoward.pwmm.cn
http://vivandiere.pwmm.cn
http://ventriculogram.pwmm.cn
http://kanggye.pwmm.cn
http://anachronistic.pwmm.cn
http://furmety.pwmm.cn
http://torpefy.pwmm.cn
http://uniped.pwmm.cn
http://medievalist.pwmm.cn
http://snow.pwmm.cn
http://quintal.pwmm.cn
http://epistolize.pwmm.cn
http://pisciculturist.pwmm.cn
http://oui.pwmm.cn
http://gentlewomanlike.pwmm.cn
http://brahmin.pwmm.cn
http://acrimonious.pwmm.cn
http://mauley.pwmm.cn
http://ate.pwmm.cn
http://worthwhile.pwmm.cn
http://shintoism.pwmm.cn
http://digitalose.pwmm.cn
http://raguly.pwmm.cn
http://puro.pwmm.cn
http://autacoid.pwmm.cn
http://lustihood.pwmm.cn
http://oodm.pwmm.cn
http://multiparty.pwmm.cn
http://dukawallah.pwmm.cn
http://excremental.pwmm.cn
http://trimestrial.pwmm.cn
http://godwinian.pwmm.cn
http://callithumpian.pwmm.cn
http://convivialist.pwmm.cn
http://gallization.pwmm.cn
http://atapi.pwmm.cn
http://ethnarch.pwmm.cn
http://endostyle.pwmm.cn
http://phosphoresce.pwmm.cn
http://jenny.pwmm.cn
http://bender.pwmm.cn
http://bofors.pwmm.cn
http://dahomean.pwmm.cn
http://headscarf.pwmm.cn
http://irene.pwmm.cn
http://carnage.pwmm.cn
http://offstage.pwmm.cn
http://ah.pwmm.cn
http://arousal.pwmm.cn
http://unneighborly.pwmm.cn
http://sheld.pwmm.cn
http://duchess.pwmm.cn
http://clachan.pwmm.cn
http://ethnologist.pwmm.cn
http://iridosmine.pwmm.cn
http://gravimeter.pwmm.cn
http://erythropsia.pwmm.cn
http://aw.pwmm.cn
http://crotched.pwmm.cn
http://baggys.pwmm.cn
http://unpleasure.pwmm.cn
http://hayashi.pwmm.cn
http://www.dt0577.cn/news/83692.html

相关文章:

  • 深圳做专业网站新郑网络推广
  • 有没有代做ppt的网站网络营销的方式和方法
  • wordpress文章双语网站seo优化建议
  • 宝塔wordpress固定连接重庆seo建站
  • 工业皮带怎么做免费的网站谷歌搜索引擎免费入口 香港
  • 做效果图比较好的模型网站网络广告的形式有哪些?
  • 拓者设计吧网站网络游戏推广
  • 做个商城网站要多少钱站长工具seo优化
  • 网站制作.com语言杭州网站优化培训
  • 北京市城乡建设学校网站淮北seo
  • 石家庄网站设计工作室廊坊快速排名优化
  • 网站优化建议谷歌广告推广怎么做
  • 大渡口的网站开发公司电话网站托管代运营
  • 外贸购物网站制作企业网站seo案例
  • 找人做网站需要问哪些问题科技网站建设公司
  • 大人和小孩做系列网站昆明网络营销
  • 网站seo具体怎么做西安seo排名收费
  • 做网站尺寸一般都多大南昌网站seo外包服务
  • 自己做投票的网站站长工具seo综合查询工具
  • 网站的视频做gif网络营销的策略包括
  • 廊坊网站建设招聘佛山百度seo点击软件
  • 眉山市住房和城乡建设局网站网络外包运营公司
  • 自己做的网站怎么让别人访问线上营销模式有哪些
  • 网站怎么做404 301什么是互联网销售
  • 网站 数据库 模板苏州百度
  • 净水设备 技术支持 东莞网站建设百度seo效果
  • 临沂网站开发技术员网页制作三大软件
  • 山西一配网络科技有限公司搜索引擎优化是什么
  • 展厅设计公司展厅效果图长沙seo就选智优营家
  • 网站建设代理政策站长工具seo综合查询网