出于调试目的而引发错误?

时间:2017-01-18 15:47:35

标签: actionscript-3 error-handling

假设我有一个有437个案例的开关。我已经确定了每一个可能的情况(我认为),并且每个都被处理掉了。 我担心我错过了#438,并希望默认情况下提醒我这件事

我可以
trace("ERROR! Stackoverflow has detected your ginormous gaffe and suspended your account indefinitely!");

在那里,但我担心这个错误将在7周后发生,并且跟踪将在我所有其他愚蠢的警告痕迹中丢失。我考虑过让我的默认做到这一点:

trace(myArray[-1]);

肯定会(?)给出错误并停止程序,提醒我隐藏的疏忽,但我想知道是否有更好,更聪明的方法来检测这样的可能错误。<登记/> 任何人? Bueller?

2 个答案:

答案 0 :(得分:4)

为什么不抛出错误?

default: 
    throw new Error("Default reached");

答案 1 :(得分:3)

第一个选项是抛出异常:

throw new Error('Exception!!!')

但是如果你没有调试器flashplayer,你将无法得到任何东西

另一种方法是显示弹出窗口: 如果你在浏览器中使用flashplayer:

ExternalInterface.call("alert", "Exception!!!");

如果您使用Flex Framework:

Alert.show('Exception!!!')

你可以尝试以某种方式高亮显示它:

trace(  "==========================================\n" + 
        "==========================================\n" +
        "==========================================\n" +
        "===============Exception!!!===============\n" + 
        "==========================================\n" +
        "==========================================\n" +
        "==========================================\n" +); 

最后一个选项是自定义弹出窗口:

import flash.text.TextField;
import flash.text.TextFieldAutoSize;

const theStage:Stage = MovieClip(root).stage;
const tf:TextField = new TextField();
tf.text = "Exception!!!";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.x = theStage.stageWidth - tf.width  >> 1;
tf.y = theStage.stageHeight - tf.height  >> 1;
tf.border = true;
tf.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){
    e.currentTarget.parent.removeChild(e.currentTarget);
})
theStage.addChild(tf);

import flash.text.TextField; import flash.text.TextFieldAutoSize; const theStage:Stage = MovieClip(root).stage; const tf:TextField = new TextField(); tf.text = "Exception!!!"; tf.autoSize = TextFieldAutoSize.LEFT; tf.x = theStage.stageWidth - tf.width >> 1; tf.y = theStage.stageHeight - tf.height >> 1; tf.border = true; tf.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){ e.currentTarget.parent.removeChild(e.currentTarget); }) theStage.addChild(tf);