我已经在StackOverFlow上阅读了有关已检查和未经检查的异常的多个帖子.老实说,我还是不太确定如何正确使用它们.
Joshua Bloch在" Effective Java "中说过
对可恢复条件使用已检查的异常,对编程错误使用运行时异常(第2版中的第58项)
让我们看看我是否正确理解这一点.
以下是我对已检查异常的理解:
try{
String userInput = //read in user input
Long id = Long.parseLong(userInput);
}catch(NumberFormatException e){
id = 0; //recover the situation by setting the id to 0
}
Run Code Online (Sandbox Code Playgroud)
1.以上是否考虑了检查异常?
2. RuntimeException是未经检查的异常吗?
以下是我对未经检查的异常的理解:
try{
File file = new File("my/file/path");
FileInputStream fis = new FileInputStream(file);
}catch(FileNotFoundException e){
//3. What should I do here?
//Should I "throw new FileNotFoundException("File not found");"?
//Should I log?
//Or should I System.exit(0);?
}
Run Code Online (Sandbox Code Playgroud)
4.现在,上述代码也不能成为检查异常吗?我可以尝试恢复这样的情况吗?我可以吗?(注意:我的第3个问题在catch
上面)
try{
String …
Run Code Online (Sandbox Code Playgroud) java exception runtimeexception checked-exceptions unchecked-exception
在Kotlin中如果你不想在构造函数或类体的顶部初始化类属性,你基本上有这两个选项(来自语言参考):
lazy()是一个函数,它接受一个lambda并返回一个Lazy实例,它可以作为实现一个惰性属性的委托:第一次调用get()执行传递给lazy()的lambda并记住结果,后续调用get()只返回记住的结果.
例
Run Code Online (Sandbox Code Playgroud)public class Hello { val myLazyString: String by lazy { "Hello" } }
所以第一次调用和子命令调用,无论它在哪里,到myLazyString将返回"Hello"
通常,必须在构造函数中初始化声明为具有非null类型的属性.但是,这通常不方便.例如,可以通过依赖注入或单元测试的设置方法初始化属性.在这种情况下,您无法在构造函数中提供非null初始值设定项,但在引用类体内的属性时仍希望避免空值检查.
要处理这种情况,可以使用lateinit修饰符标记属性:
Run Code Online (Sandbox Code Playgroud)public class MyTest { lateinit var subject: TestSubject @SetUp fun setup() { subject = TestSubject() } @Test fun test() { subject.method() } }
修饰符只能用于在类体(不在主构造函数中)内声明的var属性,并且只能在属性没有自定义getter或setter时使用.属性的类型必须为非null,并且它不能是基本类型.
那么,如何在这两个选项之间正确选择,因为它们都可以解决同样的问题?
如此处所述,可以更改项目的名称.但是,它只更改项目的名称,它不会更改文件夹结构.
例如,如果您的项目名为sample1并且它位于〜/ user1/development/IdeaProjects/sample1,则如果将项目名称更改为sample2,则文件夹位置将不会更改为〜/ user1/development/IdeaProjects/sample2.
我主要是一名C#开发人员,我正在向我的朋友教授Data Structures,他们在他们的大学里使用Java,我在Java中看到了这样一个表达式:
void printCollection(Collection<?> c) {
for (Object e : c) {
System.out.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我还没有在C#中看到这样的东西,所以我想知道Java Collection<T>
和Collection<?>
Java 之间的区别是什么?
void printCollection(Collection<T> c) {
for (Object e : c) {
System.out.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它也可以用上面的方式编写.在文档中的家伙比较Collection<Object>
和Collection<T>
虽然.
示例来自http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
在我正在阅读的教科书中找到哈希冲突管理主题中的主要和次要群集之间的区别,过去几天我很困惑.
algorithm hash quadratic-probing data-structures linear-probing
我正在Date
Time
为我的Android应用程序使用材料选择器.但我想在一个对话框中组合Date
和Time
选择器.
我正在关注这一个.但是我需要选择日期选择之后的时间.
请建议可行的方法来做这个.
从这个 oracle java教程:
当事务A检索行时,事务B随后更新该行,并且事务A稍后再次检索同一行,则发生不可重复的读取.事务A检索同一行两次但看到不同的数据.
脏读和不可重复读之间有什么区别?这不是一回事吗?因其他人的更新而读错了结果?
提前致谢.
我需要一些有关迁移的帮助。我正在尝试使用迁移来播种数据库。但我收到错误“QueryFailedError:关系“帐户”不存在”。我认为这只是典型的新手错误。所以请检查我的代码:
帐户.实体.ts
import { BeforeInsert, Column, Entity, OneToMany } from 'typeorm';
import { AbstractEntity } from '../../common/abstract.entity';
import { SourceEntity } from '../source/source.entity';
import { UtilsService } from '../../shared/services/utils.service';
@Entity({ name: 'account' })
export class AccountEntity extends AbstractEntity {
@Column({ unique: true })
username: string;
@Column({ nullable: true })
password: string;
@OneToMany(() => SourceEntity, (source) => source.account, {
cascade: true,
})
sources: SourceEntity[];
@BeforeInsert()
async setPassword() {
this.password = UtilsService.generateHash(this.password);
}
}
Run Code Online (Sandbox Code Playgroud)
种子数据.migration.ts
import { getCustomRepository, MigrationInterface, QueryRunner } from …
Run Code Online (Sandbox Code Playgroud) let
在Kotlin中使用多个嵌套是一个好习惯,还是应该引入一个局部变量?有没有任何开销?
webView?.let { webview ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webview.setLayerType(View.LAYER_TYPE_HARDWARE, null)
} else {
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
}
webview.webViewClient = WebViewClient()
webview.settings.let { settings ->
settings.javaScriptEnabled = true
settings.setSupportZoom(false)
settings.builtInZoomControls = false
settings.displayZoomControls = false
settings.loadsImagesAutomatically = true
}
}
Run Code Online (Sandbox Code Playgroud) 我在 NestJS 中看到两种模拟服务进行单元测试的方法,第一种与我们在实际模块中定义提供程序相同,例如:
const module = await Test.createTestingModule({
providers: [
UserService,
{
provide: getRepositoryToken(User),
useValue: mockUsersRepository,
}
],
}).compile();
Run Code Online (Sandbox Code Playgroud)
以及方法的另一种方式overrideProvider
。如下:
const module = await Test.createTestingModule({
imports: [UserModule]
})
.overrideProvider(getRepositoryToken(User))
.useValue(mockUsersRepository)
.compile();
Run Code Online (Sandbox Code Playgroud)
有什么不同?
java ×5
kotlin ×4
android ×2
database ×2
nestjs ×2
algorithm ×1
collections ×1
exception ×1
generics ×1
hash ×1
ide ×1
jdbc ×1
node.js ×1
postgresql ×1
properties ×1
transactions ×1
typeorm ×1
types ×1
unit-testing ×1