小编Jak*_*rka的帖子

如果文件不存在,则正常退出

我在Python 3.2.3中有以下脚本:

try:
    file = open('file.txt', 'r')
except IOError:
    print('There was an error opening the file!')
    sys.exit()

#more code that is relevant only if the file exists
Run Code Online (Sandbox Code Playgroud)

如果文件不存在(或打开它只是一个错误),如何正常退出?

我可以使用exit(),但会打开一个对话框面板,询问我是否要杀死该应用程序.

我可以使用sys.exit(),但这会引发一个SystemExit异常,它在输出中看起来不太好.我明白了

Traceback (most recent call last):   
File "file", line 19, in <module>
    sys.exit() SystemExit
Run Code Online (Sandbox Code Playgroud)

我可以使用os.exit(),但这会在C级别上杀死Python,而不会进行任何我可能正在执行的清理工作.

我可以使用布尔变量并将所有后续代码包装在if ...但这很难看,这不是我正在执行的唯一检查.所以我想要六个嵌套的ifs ......

我只想打印'有一个错误......'并退出.我在IDLE工作.

python python-idle

21
推荐指数
1
解决办法
3万
查看次数

JNI附加/分离线程内存管理

我有一个JNI回调:

void callback(Data *data, char *callbackName){
    JNIEnv *env;
    jvm->AttachCurrentThread((void **)&env, NULL);
    /* start useful code*/

    /* end useful code */
    jvm->DetachCurrentThread();
}
Run Code Online (Sandbox Code Playgroud)

当我这样运行它(空的有用代码)时,我得到了内存泄漏.如果我注释掉整个方法,就没有泄漏.连接/拆卸螺纹的正确方法是什么?

我的应用程序处理实时声音数据,因此必须尽快完成负责数据处理的线程,以便为另一批处理做好准备.所以对于这些回调,我创建了新的线程.它们每秒都有几十甚至几百个,它们将自己附加到JVM,调用一个重新绘制图形,分离和死亡的回调函数.这是做这件事的正确方法吗?如何处理泄漏的内存?

编辑:错字

好的,我已经创建了一个所需的mimimal代码:

package test;

public class Start
{
    public static void main(String[] args) throws InterruptedException{
        System.loadLibrary("Debug/JNITest");
        start();
    }

    public static native void start();
}
Run Code Online (Sandbox Code Playgroud)

#include <jni.h>
#include <Windows.h>
#include "test_Start.h"

JavaVM *jvm;
DWORD WINAPI attach(__in  LPVOID lpParameter);

JNIEXPORT void JNICALL Java_test_Start_start(JNIEnv *env, jclass){
    env->GetJavaVM(&jvm);
    while(true){
        CreateThread(NULL, 0, &(attach), NULL, 0, NULL);
        Sleep(10);
    }
}


DWORD …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface

13
推荐指数
2
解决办法
1万
查看次数

在Java中,为什么我不需要导入RuntimeException来使用它?

如果我尝试使用没有完全限定名称的IOException并且没有导入,则会出现编译错误.但是,当我使用RuntimeException或Exception执行相同操作时,不会发生这种情况.这是为什么?

谢谢

java import ioexception runtimeexception

5
推荐指数
1
解决办法
3812
查看次数

按Enter键关闭对话框

我有一个特殊的要求:

我有一个创建新对象模式对话框,其中包含许多字段和按钮确定和取消.我希望OK按钮具有焦点,因此用户只需调用对话框并按Enter即可创建具有默认值的新对象.我试着打电话requestFocusInWindow(),但是在实际显示窗口之前这不起作用.在显示窗口后我无法调用它,因为对话框是模态的.并且setInitialFocusedComponent()在对话框类中没有类似的方法.

好的,那么我继续为KeyListener对话框中的每个字段创建一个(只有3个,没什么大不了的),如果用户按Enter键就会手动按OK按钮.现在的问题是第一个字段(因此是焦点字段)是a JSpinner,它消耗它自己的字段KeyEvents.所以按Enter键什么也没做.

如何在不重新组织元素的情况下在对话框中实现"Enter to OK"行为?

java swing dialog

5
推荐指数
1
解决办法
1464
查看次数

共享变量的竞争条件

我有一个类型的共享变量double.这个变量将由两个线程访问.一个线程将只编写变量,而另一个线程将只读取变量.

我还能在这里得到比赛条件吗?如果是的话,C++中是否有一种"简单"的方式来实现原子访问?如果有更多的读取而不是写入,我如何有效地实现它?我需要将变量标记为volatile

编辑:好的"阅读器"线程定期对批量数据工作,新值的传播不是时间敏感的.我没有实现我没有好的测试方法的复杂联锁,而是可以声明写入线程将写入的另一个临时变量.然后,当读者完成一个批处理时,它可以将临时值原子传播到实际变量.这会没有竞争条件吗?

c++ multithreading atomic

3
推荐指数
1
解决办法
1588
查看次数

除了更好的可读性之外,还有其他任何访问修饰符吗?

我的意思是,如果我在Java中声明任何访问修饰符,那么修饰符可以被规避(包私有和受保护 - 包注入;任何 - 反射).我知道声明这些东西有助于理解和组织代码,但除此之外,是否有任何技术原因或固有的Java功能?

谢谢你们的精彩回应.我很遗憾我只能标记一个答案.

java access-modifiers

2
推荐指数
1
解决办法
598
查看次数

Integer.class和Integer.TYPE之间的区别

两者有什么区别?基本类型不能具有“ Class”,可以吗?它是原始的。没有对象可以上课。

这两者在哪里有区别?

java

1
推荐指数
1
解决办法
844
查看次数

如何在JDesktopPane上添加JLabel

我想在我的JDesktopePane..i添加JLable写了如下code..but标签上未窗格中显示.

   {
      frame1.setContentPane(desktop);
      frame1.setSize(900,700);
      frame1.setVisible(true);
      desktop.setBackground(Color.DARK_GRAY );
      JLabel label1 = new JLabel("Main Page", SwingConstants.CENTER);
      label1.setFont(new Font("SansSerif",Font.ITALIC + Font.BOLD,54));
      desktop.add(label1);**
   }
Run Code Online (Sandbox Code Playgroud)

java swing jlabel jdesktoppane

1
推荐指数
1
解决办法
1392
查看次数

空字符串不匹配.*?

我希望匹配BEGIN和END之间关于空格和换行符的任何内容.

IE我有以下文字:

BEGIN

END

BEGIN
   a
END
Run Code Online (Sandbox Code Playgroud)

我想写一个返回两个匹配的正则表达式:''和'a'.目前我有这个:

/\s*BEGIN\s*\n(.*?)\n\s*END\s*\n/sg

但是,这个只给出一个匹配:

END

BEGIN
    a
Run Code Online (Sandbox Code Playgroud)

你会看到问题出在哪里:第一个BEGIN与第二个END配对.我希望它与第一个END配对.看起来像

.*? 
Run Code Online (Sandbox Code Playgroud)

与空字符串不匹配 - 即它贪婪地匹配.

regex perl

0
推荐指数
1
解决办法
110
查看次数