当前位置: 首页 > 面试题库 >

快速捕获无效用户输入的异常

羿季
2023-03-14
问题内容

我正在尝试这是一个计算器的代码。如何处理来自用户的无效输入?

// ANSWER:将标头桥接到Objective-C //
https://github.com/kongtomorrow/TryCatchFinally-
Swift

这是相同的问题,但在objc中,但我想迅速进行

我只想显示一条消息,如果它不起作用,但是现在当用户输入的格式不正确时,我将收到一个异常消息。

import Foundation

var equation:NSString = "60****2"  // This gives a NSInvalidArgumentException', 
let expr = NSExpression(format: equation) // reason: 'Unable to parse the format string
if let result = expr.expressionValueWithObject(nil, context: nil) as? NSNumber {
    let x = result.doubleValue
    println(x)
} else {
    println("failed")
}

问题答案:

在Swift 2中,这仍然是一个问题。如上所述,最好的解决方案是使用桥接标头并在Objective C中捕获NSException。

https://medium.com/swift-programming/adding-try-catch-to-
swift-71ab27bcb5b8
描述了一个很好的解决方案,但是确切的代码无法在Swift
2中编译,因为try并且catch现在是保留关键字。您需要更改方法签名以解决此问题。这是一个例子:

// https://medium.com/swift-programming/adding-try-catch-to-swift-71ab27bcb5b8

@interface TryCatch : NSObject

+ (void)tryBlock:(void (^)())try catchBlock:(void (^)(NSException *))catch finallyBlock:(void (^)())finally;

@end

@implementation TryCatch

+ (void)tryBlock:(void (^)())try catchBlock:(void (^)(NSException *))catch finallyBlock:(void (^)())finally {
    @try {
        try ? try() : nil;
    }
    @catch (NSException *e) {
        catch ? catch(e) : nil;
    }
    @finally {
        finally ? finally() : nil;
    }
}

@end


 类似资料:
  • 有可能在SWIFT中捕捉异常吗?给定以下代码: 有可能防止异常使整个程序崩溃吗?也就是说,在Objective-C中,与以下内容相对应的Swift等价是什么:

  • 共享收货地址接口 wx.openAddress({ success: function (res) { var userName = res.userName; // 收货人姓名 var postalCode = res.postalCode; // 邮编 var provinceName = res.provinceName; // 国标收货地址第一级地址(省)

  • 当谈到编码时,我是一个完全的初学者。我现在在当地的社区大学上编程课。我们被指派创建一个程序来计算用户的BMI(身体质量指数)。 我已经设法创建了程序的基本结构,用户输入体重和身高,并将其计算到BMI中。然而,有一个标准我正在努力创建。 null 请以英寸为单位输入身高:62 请以磅为单位输入体重:X 对不起,您没有输入磅数 我有一个想法,因为人们建议使用try,catch语句。我试过了,但我似乎能

  • 我有以下代码。 然而,它没有捕捉到所有的错误,我仍然得到“throw er//未处理的“错误”事件。 这是为什么呢? 例如,直到我添加了一个特定的错误处理程序,它才捕获parse()函数中的错误。即使不添加,我的try/catch是否应该捕获此错误? 提前致谢!

  • 当用户在扫描器中输入任何整数时,我试图捕捉一个异常。我理解使用字符串item=scan。nextLine()将允许进行任何输入,包括整数。我创建了一个自定义异常来捕捉数字1。但是如果用户输入999或任何其他整数会发生什么呢。我如何捕获这些其他整数作为异常的一部分? import java.util.Scanner;import java.lang.Exception; 公共类示例一{ } 公共类T

  • 本文向大家介绍Android WebView控件捕获用户输入的信息,包括了Android WebView控件捕获用户输入的信息的使用技巧和注意事项,需要的朋友参考一下 WebView可所谓是Android中最强大的控件之一,无所不能。 于是有这么一个需求,用户在app之中内嵌的WebView中输入帐号密码的时候,App需要捕获已经输入的帐号密码。 当用户输入帐号密码,一般情况下会进行页面转跳,在页