forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			118 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package haxe; | ||
|  | 
 | ||
|  | /** | ||
|  | 	Base class for exceptions. | ||
|  | 
 | ||
|  | 	If this class (or derivatives) is used to catch an exception, then | ||
|  | 	`haxe.CallStack.exceptionStack()` will not return a stack for the exception | ||
|  | 	caught. Use `haxe.Exception.stack` property instead: | ||
|  | 	```haxe | ||
|  | 	try { | ||
|  | 		throwSomething(); | ||
|  | 	} catch(e:Exception) { | ||
|  | 		trace(e.stack); | ||
|  | 	} | ||
|  | 	``` | ||
|  | 
 | ||
|  | 	Custom exceptions should extend this class: | ||
|  | 	```haxe | ||
|  | 	class MyException extends haxe.Exception {} | ||
|  | 	//... | ||
|  | 	throw new MyException('terrible exception'); | ||
|  | 	``` | ||
|  | 
 | ||
|  | 	`haxe.Exception` is also a wildcard type to catch any exception: | ||
|  | 	```haxe | ||
|  | 	try { | ||
|  | 		throw 'Catch me!'; | ||
|  | 	} catch(e:haxe.Exception) { | ||
|  | 		trace(e.message); // Output: Catch me! | ||
|  | 	} | ||
|  | 	``` | ||
|  | 
 | ||
|  | 	To rethrow an exception just throw it again. | ||
|  | 	Haxe will try to rethrow an original native exception whenever possible. | ||
|  | 	```haxe | ||
|  | 	try { | ||
|  | 		var a:Array<Int> = null; | ||
|  | 		a.push(1); // generates target-specific null-pointer exception | ||
|  | 	} catch(e:haxe.Exception) { | ||
|  | 		throw e; // rethrows native exception instead of haxe.Exception | ||
|  | 	} | ||
|  | 	``` | ||
|  | **/ | ||
|  | extern class Exception { | ||
|  | 	/** | ||
|  | 		Exception message. | ||
|  | 	**/ | ||
|  | 	public var message(get,never):String; | ||
|  | 	private function get_message():String; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		The call stack at the moment of the exception creation. | ||
|  | 	**/ | ||
|  | 	public var stack(get,never):CallStack; | ||
|  | 	private function get_stack():CallStack; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Contains an exception, which was passed to `previous` constructor argument. | ||
|  | 	**/ | ||
|  | 	public var previous(get,never):Null<Exception>; | ||
|  | 	private function get_previous():Null<Exception>; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Native exception, which caused this exception. | ||
|  | 	**/ | ||
|  | 	public var native(get,never):Any; | ||
|  | 	final private function get_native():Any; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Used internally for wildcard catches like `catch(e:Exception)`. | ||
|  | 	**/ | ||
|  | 	static private function caught(value:Any):Exception; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Used internally for wrapping non-throwable values for `throw` expressions. | ||
|  | 	**/ | ||
|  | 	static private function thrown(value:Any):Any; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Create a new Exception instance. | ||
|  | 
 | ||
|  | 		The `previous` argument could be used for exception chaining. | ||
|  | 
 | ||
|  | 		The `native` argument is for internal usage only. | ||
|  | 		There is no need to provide `native` argument manually and no need to keep it | ||
|  | 		upon extending `haxe.Exception` unless you know what you're doing.
 | ||
|  | 	**/ | ||
|  | 	public function new(message:String, ?previous:Exception, ?native:Any):Void; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Extract an originally thrown value. | ||
|  | 
 | ||
|  | 		Used internally for catching non-native exceptions. | ||
|  | 		Do _not_ override unless you know what you are doing. | ||
|  | 	**/ | ||
|  | 	private function unwrap():Any; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Returns exception message. | ||
|  | 	**/ | ||
|  | 	public function toString():String; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		Detailed exception description. | ||
|  | 
 | ||
|  | 		Includes message, stack and the chain of previous exceptions (if set). | ||
|  | 	**/ | ||
|  | 	public function details():String; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 		If this field is defined in a target implementation, then a call to this | ||
|  | 		field will be generated automatically in every constructor of derived classes | ||
|  | 		to make exception stacks point to derived constructor invocations instead of | ||
|  | 		`super` calls. | ||
|  | 	**/ | ||
|  | 	// @:noCompletion @:ifFeature("haxe.Exception.stack") private function __shiftStack():Void; | ||
|  | } |