[解決済み] SwiftでNSExceptionをキャッチする
2023-06-04 20:35:17
質問
Swiftの次のコードは、NSInvalidArgumentException例外を発生させます。
task = NSTask()
task.launchPath = "/SomeWrongPath"
task.launch()
例外をキャッチするにはどうすればいいのでしょうか?私が理解しているように、Swiftのtry/catchはSwift内で投げられたエラーのためであり、NSTask(これはObjCで書かれていると思います)のようなオブジェクトから発生したNSExceptionsのためではありません。私はSwiftに新しいので、私は明白な何かを見逃しているかもしれません...
編集 : このバグのレーダーです(特にNSTask用)。 openradar.appspot.com/22837476
どのように解決するのですか?
NSExceptionsをSwift 2のエラーに変換するコードがあります。
これで
do {
try ObjC.catchException {
/* calls that might throw an NSException */
}
}
catch {
print("An error ocurred: \(error)")
}
ObjC.h:
#import <Foundation/Foundation.h>
@interface ObjC : NSObject
+ (BOOL)catchException:(void(^)(void))tryBlock error:(__autoreleasing NSError **)error;
@end
ObjC.m
#import "ObjC.h"
@implementation ObjC
+ (BOOL)catchException:(void(^)(void))tryBlock error:(__autoreleasing NSError **)error {
@try {
tryBlock();
return YES;
}
@catch (NSException *exception) {
*error = [[NSError alloc] initWithDomain:exception.name code:0 userInfo:exception.userInfo];
return NO;
}
}
@end
これを "*-Bridging-Header.h" に追加することを忘れないでください。
#import "ObjC.h"
関連
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftの@selector()?
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み] ビルド入力ファイルが見つかりません」Swift 4.2、Xcode 10.0
-
[解決済み] XcodeでFirebase Analyticsをオンにする
-
[解決済み] YクラスのオブジェクトXはSwiftでmethodSignatureForSelectorを実装していない
-
[解決済み] Swift 3.0 でコンパイルしたモジュールを Swift 3.0.1 でインポートできない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Swift Error fatal error: Optional value のアンラップ中に予期せず nil を発見した。
-
[解決済み】iPhoneアプリでNSErrorを使用するにはどうすればよいですか?
-
[解決済み] Protocol ... can only be used as generic constraint because it has Self or associated type requirements "とは、どういう意味ですか?
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] 既存のUIKitアプリケーションにSwiftUIビューを含める
-
[解決済み] Swift: インデックスで文字列配列を置換する
-
[解決済み] 固定サイズのオブジェクトの配列を作成する方法
-
[解決済み] Swiftの数学関数
-
[解決済み] Swiftで配列の最後の要素を取得する方法は?
-
[解決済み] Codableクラスはプロトコルに準拠していない Decodable