草庐IT

collisions_block

全部标签

java - 为什么 catch block 在 Java 中未初始化变量时出错

这是我写的代码。intnum;try{num=100;DoSomething();System.out.println(num);}catch(Exceptione){DoSomething1();}finally{DoSomething2();}System.out.println(num);//ErrorLine我在提到的错误行上收到错误“局部变量num可能尚未初始化”。删除catchblock时,错误消失。这里有什么问题?我做错了什么吗? 最佳答案 如果在您的tryblock中抛出异常,那么变量num可能确实没有被初始化。如果

java - 为什么在一个 case block 中定义的变量在其他 case block 中可用?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyarevariablesnotlocalincasestatements?作用域block中定义的变量不能在其外部使用。例如,下面的代码片段是无效的:{intanothervar=4;}{System.out.println(anothervar);}但看起来caseblock不会创建单独的作用域。switch(mode){caseONE:dosomething();return;caseTWO:int[]someints=newint[]{2,3,5,7};SomeObjectobj=newSomeO

java - try catch block 创建干净代码的最佳实践是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:BestpracticesforexceptionmanagementinJAVAorC#我读过aquestion今天早些时候在stackoverflow上,它让我思考什么是处理异常的最佳实践。所以,我的问题是什么是最佳实践来处理异常以产生干净和高质量的代码。这是我的代码,我认为它很简单,但如果我错了或不清楚,请告诉我!我试图牢记方法中的可测试性和相同的抽象级别。欢迎提出建设性意见。:)importjava.awt.Point;importjava.io.Closeable;importjava.io.Fil

c++ - 区 block 链 Hyperledger 私钥漏洞

这个创建硬币的方法有一个小问题。我遇到了一些错误,我有点迷路了。当我验证一个secret地址私钥时它工作正常,当我在向它发送奖励之前打印它时显示正常,但是当我向它发送奖励时,它们会转到一个酒吧地址。谁能发现这个错误?boolCWallet::CreateCoinStake(constCKeyStore&keystore,unsignedintnBits,int64_tnSearchInterval,int64_tnFees,CTransaction&txNew,CKey&key){CBlockIndex*pindexPrev=pindexBest;CBigNumbnTargetPerC

c++ - 如果一个对象在本地创建并在 C++ 中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch block 中?

在tryblock中,调用函数“fun()”。在“fun”中创建了类“abc”的本地对象并抛出异常。这个本地对象被捕获在“catch”block中,并且打印了一个正确的值。由于这个对象是在本地创建的,它不应该打印“0(默认值)”,因为调用throw时会发生堆栈展开。#includeusingnamespacestd;classabc{intvar;public:abc():abc(0){}abc(inti):var(i){}voidprint(){cout输出:里面试试内部乐趣()里面abc:10我的期望:里面试试内部乐趣()内abc:0 最佳答案

c++ - 像访问文件流一样访问一 block 内存(/C/C++数组)

有没有办法在C(或C++)中做到这一点?背景信息:我将逐行读取一个内存块或一个大文件并一次处理这些行,我懒得把同样的东西写两次,一次用于内存块,一次用于文件流。如果需要使用文件流版本,那么该文件将无法装入内存。可以理解的是,我可以将内存块保存到文件中,然后使用文件流访问相同的数据,但这似乎是在浪费计算机时间。我知道linux系统上的/dev/shm。有没有更可移植的东西在语言层(C或C++)为我提供相同类型的抽象? 最佳答案 在C中你可以使用sprintf和sscanf,在C++中有std::stringstream使用字符串构造的

c++ - 为什么 shared_ptr<> 必须分别为控制 block 和管理对象分配?

此链接问题询问是否make_shared函数和shared_ptr构造函数不同。Whathappenswhenusingmake_shared部分答案是make_shared通常会在一次分配中为指向对象和智能指针控制block分配内存。shared_ptr构造函数使用两个分配。cppreference声明构造函数“必须”这样做,但没有给出任何理由。这是为什么?出于某种原因这是不可能的吗?还是因为其他原因被标准禁止? 最佳答案 想想std::shared_ptr构造函数是如何工作的:std::shared_ptr(newFoo());

c++ - 使用异常的 C++ 程序是否需要在其主要函数中包含 try/catch block ?

如果异常由C++代码抛出但未被捕获,则会导致SIGABRT。有些系统只打印“Abort”,有些系统还会打印e.what()的内容。问题是:C++标准是否规定main函数中需要try/catchblock才能将程序视为行为良好的程序,还是C++只是默默地依赖系统来处理它? 最佳答案 如C++17standarddraft中所述,在第18.3.9节[except.handle]中:Ifnomatchinghandlerisfound,thefunctionstd::terminate()iscalled;whetherornotthes

C++ 控制台输入 block 所以我不能杀死线程

我的程序有许多不同的线程处理不同的事情,其中​​一个处理用户输入。其他线程没有太多阻塞调用的方式,那些阻塞的线程是基于网络的,因此当套接字关闭时将被中断或正常返回。然而,用户线程调用了std::cin以获取用户输入。这样做的效果是,当所有其他线程都死了时,用户线程仍在阻塞用户输入,并且只会在下一次输入时死掉。有什么方法可以让我在阻塞之前检查是否有任何用户输入要抓取?我知道cin.peek()存在,但根据我的经验,如果没有任何内容可读,它就会阻塞。假设我正确使用它我的代码基本上是一个无限循环,当另一个线程切换条件变量时停止:voiddoLoop(){while(running)//run

c++ - 如何迭代所有 malloc block (glibc)

我正在尝试迭代所有领域中的所有malloc_chunk。(基于核心文件调试,内存泄漏和内存损坏排查)据我所知,每个竞技场都有top_chunk,它指向一个竞技场内的顶部block,基于top_chunk,其中有prev_size和size,基于代码(glibc/malloc/malloc.c):我可以获取之前的连续block,然后在一个竞技场中循环所有block。(我可以统计block的大小和数量,就像WinDBG一样:!heap-stat-h)并且还基于prev_size和size,我可以检查block是否损坏。arena(malloc_state)中有一个成员变量:next,指向下