투케이2K

387. (ios/swift5) Swift 스위프트 프로젝트에서 Objective-C (Objc) try catch 예외 발생 처리 구문 사용 방법 본문

IOS

387. (ios/swift5) Swift 스위프트 프로젝트에서 Objective-C (Objc) try catch 예외 발생 처리 구문 사용 방법

투케이2K 2023. 12. 8. 13:27

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[설 명]

 
 

[ObjC.h : 소스 코드]

#ifndef ObjC_h
#define ObjC_h

#import <Foundation/Foundation.h>
#import <Foundation/Foundation.h>

@interface ObjC : NSObject

// -----------------------------------------------------------------------------------------
// MARK: - [objc try catch] : [헤더 브릿지 파일에 추가 필요] : #import "ObjC.h"
// -----------------------------------------------------------------------------------------
/*
 // [사용 주의 점] : Objc Catch 부분을 감지 하기 위해서는 [NS] 사용 필요 (ex : NSArray)
 do {
     try ObjC.catchException {

         let data : NSArray = []
         
         let value = data[5]
         
         print("value - \(value)")
        
     }
 }
 catch {
     print("Exception : \(error)")
 }
*/
// -----------------------------------------------------------------------------------------
+ (BOOL)catchException:(void(^)(void))tryBlock error:(__autoreleasing NSError **)error;
// -----------------------------------------------------------------------------------------

@end

#endif /* ObjC_h */
 

[ObjC.m : 소스 코드]

#import <Foundation/Foundation.h>
#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
 

[swiftProject_Bridging_Header : 소스 코드]

// -----------------------------------------
#ifndef swiftProject_Bridging_Header_h
#define swiftProject_Bridging_Header_h
// -----------------------------------------

// [objc try catch]
#import "ObjC.h"

// -----------------------------------------
#endif /* swiftProject_Bridging_Header_h */
 

[결과 출력]

 

 

반응형
Comments